更新从 master 以外的分支创建的 git 分支
Updating a git branch that was created from a branch other than master
我一直在为从 master
创建的分支上的项目开发一项功能,目前正在审查合并。我称之为 dev
。同时,我从 dev
创建了一个分支,我将其命名为 branch
.
在审查时,发现 dev
需要一些更改,所以我检查 dev
退出,进行更改,然后重新提交并推送。
现在我的 branch
副本与其来源 dev
已过时。我该如何更新它?通常,我只会先获取,然后再拉取。当 master
有变化时,这样做会导致我的分支引入所述变化,让我能够及时了解同事的工作。当我尝试在我自己的分支之间执行此操作时,它说 branch
是最新的,这是不正确的。
我错过了什么?
谢谢。
编辑:我最终按照 Max Friederichs 的描述进行了变基。它按照我指定的方式使用 dev
的更改更新 branch
。我选择 Jean Rostan 的答案的原因是因为进行变基会更改 git 存储库的工作流历史记录,但是按照 Jean 的建议进行合并会合并分支中的新内容并单独保留工作流历史记录 - 有利于当你想看看发生了什么的时候。
实际上,这两种解决方案实现的是同一件事,只是对工作流历史的影响不同。
如果只是本地分支(这是您的情况),请从要更新的分支开始:
git checkout branch
然后从目标分支合并本地更改:
git merge dev
它会将dev
合并到branch
,也就是说更新它。
当你进行拉取时,你会检索上游更改(在你的远程仓库中);因此,如果您的远程仓库中的分支 branch
没有进行任何更改,则不会发现任何更改。
您需要 rebase
您的 branch
... 分支,以便它包含您对 dev
分支所做的最新更改
git checkout branch
git rebase dev
这将暂时搁置您对 branch
的更改,应用 dev
中缺少的更改,然后将您的更改重新应用到 branch
。此时也需要解决任何冲突。如果之前已推送 branch
,则需要强制推送。
我一直在为从 master
创建的分支上的项目开发一项功能,目前正在审查合并。我称之为 dev
。同时,我从 dev
创建了一个分支,我将其命名为 branch
.
在审查时,发现 dev
需要一些更改,所以我检查 dev
退出,进行更改,然后重新提交并推送。
现在我的 branch
副本与其来源 dev
已过时。我该如何更新它?通常,我只会先获取,然后再拉取。当 master
有变化时,这样做会导致我的分支引入所述变化,让我能够及时了解同事的工作。当我尝试在我自己的分支之间执行此操作时,它说 branch
是最新的,这是不正确的。
我错过了什么?
谢谢。
编辑:我最终按照 Max Friederichs 的描述进行了变基。它按照我指定的方式使用 dev
的更改更新 branch
。我选择 Jean Rostan 的答案的原因是因为进行变基会更改 git 存储库的工作流历史记录,但是按照 Jean 的建议进行合并会合并分支中的新内容并单独保留工作流历史记录 - 有利于当你想看看发生了什么的时候。
实际上,这两种解决方案实现的是同一件事,只是对工作流历史的影响不同。
如果只是本地分支(这是您的情况),请从要更新的分支开始:
git checkout branch
然后从目标分支合并本地更改:
git merge dev
它会将dev
合并到branch
,也就是说更新它。
当你进行拉取时,你会检索上游更改(在你的远程仓库中);因此,如果您的远程仓库中的分支 branch
没有进行任何更改,则不会发现任何更改。
您需要 rebase
您的 branch
... 分支,以便它包含您对 dev
分支所做的最新更改
git checkout branch
git rebase dev
这将暂时搁置您对 branch
的更改,应用 dev
中缺少的更改,然后将您的更改重新应用到 branch
。此时也需要解决任何冲突。如果之前已推送 branch
,则需要强制推送。