Git - 更新远程分支时的变基命令

Git - Rebasing command when remote branch has been updated

我正在尝试了解 rebase 我在 Git

中进行更改的正确方法是什么

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 分支已经从其他正在工作的人那里收到了其他提交 pushed/merged。所以我想通过将所有最新的东西从 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

git rebase master 用于本地 master.

如果你想变基到远程主机,使用 origin/master 其中 origin 是远程名称,origin/master 是远程的本地快照,你应该在你之前检查它是否与远程同步使用 git pull/fetch 进行变基,但无需检出到 master 然后再检回 featureX

所以你的假设是正确的。

实际上你可以变基到任何引用而不是分支名称,比如提交 ID 或标签。

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

--> 将分支 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。它不喜欢好的做法。