我想了解{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
答案 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.它不喜欢良好的实践。