如何快速前进分支?

问题描述 投票:223回答:9

我在分支上长时间开发后切换到了主人。日志显示:

您的分支在167个提交后面是“origin / master”,可以快速转发。

我试过了:

git checkout HEAD

它没有效果。这是因为我在master上签出了一个中间提交。

如何让主人留在头上?

git
9个回答
233
投票

这样做:

git checkout master
git pull origin

将获取并合并origin/master分支(你可以说git pull作为默认的原点)。


317
投票

试试git merge origin/master。如果你想确保它只做一个快进,你可以说git merge --ff-only origin/master


35
投票

在你的情况下,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

27
投票
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

现在你的主人和原始人/主人是同步的


11
投票

如果您站在不同的分支机构并想要查看最新版本的主机,您也可以这样做

git checkout -B master origin/master


3
投票

对于任何想要快进的人来说,他们不会在不检查该分支的情况下进入另一个远程分支(包括其自身),您可以这样做:

git fetch origin master:other

如果你不在other分支,这基本上快速将origin/master的指数转发到other。您可以通过这种方式快速转发多个分支。

如果您在另一个分支上工作了一段时间,并希望将远程分支从远程更新到各自的负责人:

git fetch origin master:master other:other etc:etc

2
投票

没有复杂性只需要站在你的分支机构并做一个git pull它对我有用

或者,作为第二次尝试git pull origin master,以防万一你不幸遇到第一个命令


0
投票

要重新绑定当前本地跟踪器分支,在最新的远程状态之上移动本地更改:

$ 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在复位操作之前指向的哈希值(通常很明显)并将分支硬复位到该哈希值。


-1
投票

将分支指针移动到HEAD:

git branch -f master

你的分支master已经存在,所以git不会允许你覆盖它,除非你使用... -f(这个参数代表--force

或者你可以使用rebase:

git rebase HEAD master

自己承担风险;)

© www.soinside.com 2019 - 2024. All rights reserved.