我在分支上长时间开发后切换到了主人。日志显示:
您的分支在167个提交后面是“origin / master”,可以快速转发。
我试过了:
git checkout HEAD
它没有效果。这是因为我在master上签出了一个中间提交。
如何让主人留在头上?
这样做:
git checkout master
git pull origin
将获取并合并origin/master
分支(你可以说git pull
作为默认的原点)。
试试git merge origin/master
。如果你想确保它只做一个快进,你可以说git merge --ff-only origin/master
。
在你的情况下,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
git checkout master
git pull
应该做的工作。
每当你在一个不同于主人的分支上工作时,你会得到“你的分支在后面”的消息,有人会改变主人并且你git pull。
(branch) $ //hack hack hack, while someone push the changes to origin/master
(branch) $ git pull
现在拉出了原点/主参考,但是你的主机没有与它合并
(branch) $ git checkout master
(master) $
现在master在origin / master之后,可以快速转发
this will pull and merge (so merge also newer commits to origin/master)
(master) $ git pull
this will just merge what you have already pulled
(master) $ git merge origin/master
现在你的主人和原始人/主人是同步的
如果您站在不同的分支机构并想要查看最新版本的主机,您也可以这样做
git checkout -B master origin/master
对于任何想要快进的人来说,他们不会在不检查该分支的情况下进入另一个远程分支(包括其自身),您可以这样做:
git fetch origin master:other
如果你不在other
分支,这基本上快速将origin/master
的指数转发到other
。您可以通过这种方式快速转发多个分支。
如果您在另一个分支上工作了一段时间,并希望将远程分支从远程更新到各自的负责人:
git fetch origin master:master other:other etc:etc
没有复杂性只需要站在你的分支机构并做一个git pull它对我有用
或者,作为第二次尝试git pull origin master,以防万一你不幸遇到第一个命令
要重新绑定当前本地跟踪器分支,在最新的远程状态之上移动本地更改:
$ 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在复位操作之前指向的哈希值(通常很明显)并将分支硬复位到该哈希值。
将分支指针移动到HEAD:
git branch -f master
你的分支master
已经存在,所以git不会允许你覆盖它,除非你使用... -f
(这个参数代表--force
)
或者你可以使用rebase:
git rebase HEAD master
自己承担风险;)