我不是一个git专家,所以这个问题可能看起来很愚蠢。
我有本地和远程存储库,我想将本地存储库与远程存储库同步。我有许多本地更改,隐藏的更改,以及一些尚未推送到远程的提交。
一种方法是删除所有本地更改(使用git clean),然后从远程恢复提交和fetch/pull。但我认为一定有一些单一的命令可以一次完成所有这些。我先试着用git reset --hard HEAD,然后用git pull,但结果是:
# Your branch and 'origin/master' have diverged,
# and have 1 and 9 different commits ea
简而言之,存储库又旧又大,比如说7GB。例如,当前的分支是branch01,远程称为origin。任务是在branch02上创建一个新的空提交。基本上,空提交是在执行git推送时触发CI(连续集成)过程。
但是,从一个分支切换到另一个分支可能需要几秒钟,甚至几分钟,因为可能会有大量的IO操作。是否有一种方法可以在branch02上创建空提交而不切换到它,如下所示。
# to create the empty commit
# git command: hash-object, write-tree, commit-tree
# after the empty commit is create
在提出问题之前,我想知道我对Git概念的理解是否正确,请随时纠正我:
分支名称指向分支的提示(即结束提交),以及
头指向当前分支的分支名称,以及
当前分支被定义为签出到工作目录中的分支。
以下是我的问题:
当通过git命令将新提交添加到分支时(任何可以将提交添加到分支的git命令),
问题:
git命令是否总是将分支名称向前移动以指向新提交?还是有git命令将新提交添加到分支,这些命令不移动分支名称,因此需要运行其他git命令来移动它?
什么时候
- a new commit is added to **the current branch** by a g
因此,我有以下情况:
我在本地提交了一些工作,而没有推送到远程存储库。我想要将这个本地代码移到另一个分支,因为如果我拉动,将会有一些修改会破坏我在本地所做的所有工作。
这是git status在旧分支上的输出:
On branch <branch_name>
Your branch is ahead of 'origin/<branch_name>' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working direct
在主分支中提交并使用git status之后,它告诉我起源在主人的前面,需要推送。
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
但是,当提交分支并在签出分支时使用git status时,它没有区分起源和分支之间的区别。
On branch test-01
nothing to commi
假设我有一个本地存储库A,也可以访问远程存储库B。这些存储库是完全不同的!我想推送所有的文件/提交等等..。从A到B存储库。因此,我执行了git命令:
git remote add origin <my remote git url>
git push origin master
我得到了以下错误:
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repo