Git - 更新远程分支时的重新引导命令

时间:2018-01-13 01:41:24

标签: git rebase

我想了解{GID

rebase我的更改的正确方法是什么

1)我有一个master分支

2)从master开始,我创建了一个featureX分支 - 由JIRA创建。

3)我使用git checkout featureX检查了该分支。它说它被设置为跟踪远程分支featureX - 这是正确的。我在这个分支上所做的任何推动都将被跟踪@我的远程分支。

   x1-----x2------x3-----x4   master
   |
   |
   |
   y1-----y2------y3          featureX

4)我的功能分支有y1,y2和y3提交(尚未推送到远程)。但是自从我签出featureX之后,我的master分支已经从其他任何人工作中推送/合并到其中。所以我想通过将master中的所有最新内容提取到我的featureX分支来重新定义我的更改。

这是我需要澄清的地方。

1)如果我git checkout featureX后跟git rebase master,是否会自动从master提取最新更改?我认为它只会提取我本地master分支上的更改,即远程master更新不会出现(除非我更新了我的本地master

git checkout featureX
git rebase master   # which master? my local `master` or remote `master`?

2)如果我的假设是正确的,我是否应该总是这样做?

git checkout master
git pull --rebase
git checkout featureX
git rebase master

2 个答案:

答案 0 :(得分:1)

git rebase master适用于本地master

如果要重新绑定到远程主服务器,请使用origin/master,其中origin是远程名称,origin/master是来自远程的本地快照,您应该在进行rebase之前检查它是否与远程同步使用git pull/fetch,无需签出master,然后再回到featureX

所以你的假设是正确的。

实际上你可以改为任何ref而不是分支名称,比如提交id或标签。

答案 1 :(得分:1)

git checkout featureX
git rebase master   # which master? my local `master` or remote `master`?

- >将分支的x2,x3,x4带到分支 featureX的y1

git checkout master
git pull --rebase
git checkout featureX
git rebase master

- >你不应该这样做。 git pull --rebase。你试图将变化点从A变为B,然后尝试将变化的点从B变为A.它不喜欢良好的实践。