在一个分支上开发了很长一段时间后,我切换到了master。日志显示:
你的分支比“origin/master”慢了167次提交,并且可以快进。
我试着:
git checkout HEAD
它没有任何效果。这是因为我在master上签出了一个中间提交。
我怎样才能使主人保持头脑清醒?
在一个分支上开发了很长一段时间后,我切换到了master。日志显示:
你的分支比“origin/master”慢了167次提交,并且可以快进。
我试着:
git checkout HEAD
它没有任何效果。这是因为我在master上签出了一个中间提交。
我怎样才能使主人保持头脑清醒?
当前回答
对于任何想要快进的人来说,如果不签出该分支,他们就不能进入另一个远程分支(包括它本身)。你可以:
git fetch origin master:other
如果您不在其他分支上,这基本上会将other的索引快速转发到origin/master。您可以通过这种方式快速前进多个分支。
如果你在另一个分支上工作了一段时间,并且想要从远程更新过时的分支到它们各自的头:
git fetch origin master:master other:other etc:etc
其他回答
要将当前本地跟踪器分支移动到最新的远程状态之上,需要重新设置本地跟踪器分支:
git fetch && git rebase
一般来说,快进和删除本地更改(硬重置)*:
git fetch && git checkout ${the_branch_name} && git reset --hard origin/${the_branch_name}
快进并保持本地更改(rebase):
git fetch && git checkout ${the_branch_name} && git rebase origin/${the_branch_name}
* -要撤消无意硬重置造成的更改,首先做git reflog。它以相反的顺序显示HEAD的状态。找到HEAD在重置操作之前指向的散列(通常是明显的),并将分支硬重置到该散列。
对于任何想要快进的人来说,如果不签出该分支,他们就不能进入另一个远程分支(包括它本身)。你可以:
git fetch origin master:other
如果您不在其他分支上,这基本上会将other的索引快速转发到origin/master。您可以通过这种方式快速前进多个分支。
如果你在另一个分支上工作了一段时间,并且想要从远程更新过时的分支到它们各自的头:
git fetch origin master:master other:other etc:etc
做的事情:
git checkout master
git pull origin
将获取并合并origin/master分支(你可能会说git pull as origin是默认的)。
在你的情况下,git rebase也会奏效。因为你没有master没有的更改,git会快进。如果你正在使用一个rebase工作流,这可能是更可取的,因为如果你搞砸了,你就不会以合并提交告终。
username@workstation:~/work$ git status
# On branch master
# Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
# (use "git pull" to update your local branch)
#
nothing to commit, working directory clean
username@workstation:~/work$ git rebase
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
# On branch master
nothing to commit, working directory clean
如果你站在不同的分支上,想要签出master的最新版本,你也可以这样做
git checkout -B master origin/master