【发布时间】:2015-11-20 17:55:12
【问题描述】:
众所周知,git pull = git fetch + git merge。但我对 git merge 的理解是它只影响你要合并的分支,而不是你要合并的分支。
所以在 git pull 的情况下,我想它看起来像这样:
git fetch origin
git merge origin/master
如果是这种情况,来自 origin 的新更改将在 master 上重放,但 origin/master 不会将更改提交到本地 master 分支。 git pull 是否确保远程跟踪分支 (origin/master) 包含在 git merge 之后在 master 中所做的所有新更改,还是在您执行 git push 时完成?
【问题讨论】:
-
如果将分支 B 合并到分支 A,则需要将更改推送到分支 A 的远程分支,以使更改显示在那里。
-
对不起,我不是这个意思。我想知道你在做 git fetch + git merge 的时候,远程跟踪分支是否随着本地的变化而更新。
-
如果您有本地更改,您可以使用
git stash存储更改,然后使用git pull从远程分支获取更改,然后使用git stash pop重新应用更改。执行git pull不会自动将本地更改应用到远程分支。你必须自己把它们推上去。 -
@JackmeriusTacktheritrix 感谢您的回答 - 抱歉,您的回答不是我要的。
-
顺便说一句,更准确的说法是 origin/master 上的更改将合并到 master,而不是“重放”master。另一方面,如果您将 fetch 设置为使用 rebase 而不是合并,则 您的 更改将被重放(更准确地说,复制一个 la
git cherry-pick),但在新的基本提交上找到获取步骤之后的新origin/master。