将更改合并到本地分支的git方法

11

在不必提交/隐藏本地分支上的编辑内容并检出主分支的情况下,是否可以将更改从中央存储库合并到本地分支?

如果我正在使用本地分支“work”进行工作,并且有一些未提交的更改,则可以使用以下步骤将中央存储库中的更新获取到我的工作分支中。

git stash
git checkout master
git pull 
git checkout work
git rebase master
git stash pop

通常情况下,“work”中没有未提交的更改,那么我会省略保存的步骤。

我真正希望的是像下面这样:

git pull master  (updates master while work branch is checked out and has changes)
git rebase master (rebases the updates into work branch uncommited changes are still safe)

有比我当前所做的更容易的方法吗?


令我惊讶的是,在Git中这仍然很难做到。作为长期使用SVN的用户,这种内置功能(将远程更改无缝合并到修改后的工作副本中)是我的团队每天都依赖的东西。 - Spongman
3个回答

13
您可以在分支work上执行以下操作:
git stash
git pull --rebase origin master
git stash apply

git pull --rebase 命令同时拉取远程的更改并将本地更改重新应用到远程更改之上。也就是说,它基本上执行了你脚本中展示的操作。

当然,本地更改在进行合并或变基操作时应该被提交或隐藏起来(因为如果发生合并冲突,有冲突的更改应该没有提交,以便你解决它们——但如果没有提交,你的本地更改会去哪里呢?)

当你稍后决定更新 master 分支并将 work 分支与其合并时,这不会导致问题,因为已经拉取的更改是相同的。因此,当你拉取更改时不需要更新 master 分支。


1
感谢@Pavel和@Pran。这个方法可行,我需要意识到此时更新主分支并不是必要的。只有在将工作合并到主分支时才会更新。 - ScottS

2

如果你有未提交的更改,我认为你不能拉取代码。

因此,你可以这样做:

git stash
git pull --rebase <remote> <branch> # Calls rebase instead of merge.
git stash pop

0

或许自2010年以来情况已经有所改变,但是即使你有未提交的更改,也可以从远程拉取。你的本地更改将保持未提交状态,因此你可以在方便的时候进行差异比较或合并。

git pull origin master

已测试通过 git 版本 1.9.5.msysgit.1

来自 此 Stack Overflow 回答


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接