Dam*_*mir 833 git git-rebase
我从远程存储库的master分支克隆了项目remote_repo
.我创建了新的分支,我承诺了那个分支.其他程序员推到remote_repo
了分支机构.我现在需要将我的分支RB重新绑定到remote_repo
master上.这该怎么做 ?键入终端的命令是什么?
Fre*_*abe 1143
首先从上游存储库中获取新主服务器,然后根据该工作分支重新设置工作分支:
git fetch origin # Updates origin/master
git rebase origin/master # Rebases current branch onto origin/master
Run Code Online (Sandbox Code Playgroud)
更新:请参阅Paul Draper的答案,以更简洁的方式来做同样的事情 - 最近的Git版本提供了一种更简单的方法来完成上述两个命令的等效操作.
Pau*_*per 760
git pull --rebase origin master
# where --rebase[=(false|true|merges|preserve|interactive)]
Run Code Online (Sandbox Code Playgroud)
Cha*_*esB 186
在提交给您的分支的更改后,checkout master并从中获取以从repo获取更改:
git checkout master
git pull origin master
Run Code Online (Sandbox Code Playgroud)
然后检查你的分支并在master上重新修改你的更改:
git checkout RB
git rebase master
Run Code Online (Sandbox Code Playgroud)
或者在一行中的最后两个命令:
git rebase master RB
Run Code Online (Sandbox Code Playgroud)
bh4*_*4th 105
注意:如果您对rebase有广泛的了解,那么请使用一个衬垫以下快速变形. 解决方案: 假设您在工作分支机构,并且您是唯一一个从事该工作的人.
git fetch && git rebase origin/master
Run Code Online (Sandbox Code Playgroud)
解决所有冲突,测试代码,提交并将新更改推送到远程分支.
~: For noobs :~
Run Code Online (Sandbox Code Playgroud)
以下步骤可能会帮助任何新手git rebase
并且想要轻松完成任务的人
第1步:假设此时没有对YourBranch进行提交和更改.我们正在访问YourBranch.
git checkout YourBranch
git pull --rebase
Run Code Online (Sandbox Code Playgroud)
发生了什么?拉出在您的分支上工作的其他开发人员所做的所有更改,并在其上重新定义您的更改.
第2步:解决出现的任何冲突.
第3步:
git checkout master
git pull --rebase
Run Code Online (Sandbox Code Playgroud)
发生了什么?从最新master上的master和rebases master中提取所有最新更改.
第4步:解决出现的任何冲突.
第5步:
git checkout YourBranch
git rebase master
Run Code Online (Sandbox Code Playgroud)
发生了什么?关于master的Rebase发生了
步骤6:如果存在冲突,请解决所有冲突.用于git rebase --continue
在添加已解决的冲突后继续rebase.您可以随时git rebase --abort
用来中止rebase.
第7步:
git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)
发生了什么?将更改推送到远程YourBranch.--force-with-lease
将确定在您重新定位时是否有来自其他开发人员的YourBranch的任何其他传入更改.这非常有用,而不是强制推动.如果有任何传入的更改,则在推送更改之前获取它们以更新本地YourBranch.
为什么我需要推动更改?在正确的rebase之后重写远程YourBranch中的提交消息或者是否解决了任何冲突?然后,您需要将在本地存储库中解决的更改推送到YourBranch的远程仓库
Yahoooo ...!您已成功完成变基.
你可能也在考虑做:
git checkout master
git merge YourBranch
Run Code Online (Sandbox Code Playgroud)
何时以及为何?如果您和其他联合开发人员进行了更改,请将您的分支合并为master.当你想在以后的同一个分支上工作时,这使得YourBranch与master保持同步.
~: (?? ? ?)? rebase :~
Run Code Online (Sandbox Code Playgroud)
小智 38
第1步:
git fetch origin
Run Code Online (Sandbox Code Playgroud)
第2步:
git rebase origin/master
Run Code Online (Sandbox Code Playgroud)
第 3 步:(如果有冲突,请修复)
git add .
Run Code Online (Sandbox Code Playgroud)
第四步:
git rebase --continue
Run Code Online (Sandbox Code Playgroud)
第 5 步:
git push --force
Run Code Online (Sandbox Code Playgroud)
git fetch origin master:master
拉取最新版本的master,而无需检出。
因此,您需要做的是:
git fetch origin master:master && git rebase master
如果当前分支有很多提交,并且需要在变基之前对它们进行压缩、修复和重写,那么交互式变基是正确的答案。当软件工程师说“在 master 之上进行 rebase”时,他们通常的意思是“在 origin/master 之上进行交互式 rebase,并确保它看起来很棒,不必要的提交被压缩,并且提交消息得到纠正”。
首先,检查
git status
并确保在功能分支中启动。
如果不在功能分支中,请尝试git checkout feature
然后
git fetch origin
git rebase -i origin/master
Run Code Online (Sandbox Code Playgroud)
极少数情况下,当请求在 master 之上进行变基时,提交历史记录就可以被变基了。在大多数情况下,首先使用交互式变基修改现有提交。
1.先更新Master ...
git checkout [master branch]
git pull [master branch]
Run Code Online (Sandbox Code Playgroud)
2.现在使用master分支对源分支进行重新设置
git checkout [source branch]
git rebase [master branch]
git pull [source branch] (remote/source branch)
git push [source branch]
Run Code Online (Sandbox Code Playgroud)
如果远程上尚不存在源分支,请执行以下操作:
git push -u origin [source branch]
Run Code Online (Sandbox Code Playgroud)
“等等!”