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。它不喜欢好的做法。
我正在尝试了解 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
的 y1git checkout master
git pull --rebase
git checkout featureX
git rebase master
--> 你不应该这样做。 git pull --rebase
。您尝试将更改的点从 A 带到 B,然后尝试将更改的点从 B 带到 A。它不喜欢好的做法。