我有一个从远程存储库的master分支克隆的项目remote_repo
。我创建一个新分支,然后提交该分支。其他程序员被推送到remote_repo
master分支。
现在,我需要将分支RB重新设置为remote_repo
master。
这个怎么做?键入什么命令到终端?
我有一个从远程存储库的master分支克隆的项目remote_repo
。我创建一个新分支,然后提交该分支。其他程序员被推送到remote_repo
master分支。
现在,我需要将分支RB重新设置为remote_repo
master。
这个怎么做?键入什么命令到终端?
Answers:
首先从上游存储库中获取新的母版,然后在此基础上重新构建您的工作分支:
git fetch origin # Updates origin/master
git rebase origin/master # Rebases current branch onto origin/master
更新:请参阅Paul Draper的答案,以获得更简洁的方法来进行操作-最新的Git版本提供了一种更简单的方法来完成上述两个命令。
Your branch and 'origin/b1' have diverged, # and have 3 and 2 different commits each, respectively.
似乎git pull
需要另一个。这是正确的还是我在这里遗漏了一些东西?
git rebase master
不会执行与第二个命令(git rebase origin/master
)相同的工作,因为master
它很origin/master
可能指向不同的提交(尤其是考虑到第一个命令是git fetch origin
,它可能会进行修改origin/master
)。
git pull --rebase origin master
# where --rebase[=(false|true|merges|preserve|interactive)]
git pull --rebase=interactive origin master
dev
并且运行的分支上git pull --rebase origin master
,则仅分支dev
将被修改,而不是master
。该--rebase
标志文档指出它试图rebase the current branch on top of the upstream branch after fetching
和有关修改本地跟踪分行一无所获。
将更改提交到分支后,检出master
并拉出它以从存储库中获取最新更改:
git checkout master
git pull origin master
然后签出您的分支并基于master
以下内容进行更改:
git checkout RB
git rebase master
...或一行中的最后两个命令:
git rebase master RB
尝试推回时origin/RB
,您可能会收到错误消息;如果您是唯一从事此工作的人RB
,则可以强制执行:
git push --force origin RB
...或如下所示(如果您已正确配置git):
git push -f
git push
使用-f
)。
注意:如果您已经具备有关变基的广泛知识,那么请使用一根以下的衬纸进行快速变基。 解决方案: 假设您在工作分支上,并且您是唯一在该分支上工作的人。
git fetch && git rebase origin/master
解决任何冲突,测试您的代码,提交并将新更改推送到远程分支。
~: For noobs :~
以下步骤可能会帮助任何新手git rebase
并想要轻松解决的人
步骤1:假设此时您尚未在YourBranch上进行任何提交和更改。我们正在访问YourBranch。
git checkout YourBranch
git pull --rebase
发生了什么?提取分支上其他开发人员所做的所有更改,并在此基础上重新进行更改。
步骤2:解决出现的任何冲突。
第三步:
git checkout master
git pull --rebase
发生了什么?从远程主机上提取所有最新更改,并在远程主机上重新建立本地主机的基础。我总是保持远程主机干净并准备发布!并且,只希望在本地的master或分支上工作。我建议您这样做,直到您对git进行更改或提交为止。注意:如果您不维护本地主服务器,则无需执行此步骤,而是可以直接在本地分支上进行获取和重新设置远程主服务器的基准。正如我在一开始提到的那样。
步骤4:解决出现的任何冲突。
步骤5:
git checkout YourBranch
git rebase master
发生了什么?依靠大师发生
步骤6:解决任何冲突(如果存在冲突)。使用git rebase --continue
添加解决冲突后继续重订。您可以随时用于git rebase --abort
中止重新设置基准。
步骤7:
git push --force-with-lease
发生了什么?将更改推送到您的远程YourBranch。--force-with-lease
将确保您在重新定基时其他分支为YourBranch传入其他更改。这是超级有用的方法,而不是强行推动。如果有任何传入的更改,则在推送更改之前先获取它们以更新您的本地YourBranch。
为什么我需要推动变更?要在正确的基准调整后在远程YourBranch中重写提交消息,或者是否解决了任何冲突?然后,您需要将在本地存储库中解决的更改推送到YourBranch的远程存储库中
Yahoooo ...!您已经成功完成了基础调整。
您可能还会考虑这样做:
git checkout master
git merge YourBranch
什么时候以及为什么?如果您和其他共同开发人员进行了更改,则将分支合并到master。当您以后想要在同一分支上工作时,这可使YourBranch与master保持最新。
~: (๑ơ ₃ ơ)♥ rebase :~
Pulls latest changes from remote master to local master. I always prefer keeping remote master clean and release ready always!
。我将更新我的描述。
1.先更新Master ...
git checkout [master branch]
git pull [master branch]
2.现在使用master分支对源分支进行重新设置
git checkout [source branch]
git rebase [master branch]
git pull [source branch] (remote/source branch)
git push [source branch]
如果远程上尚不存在源分支,请执行以下操作:
git push -u origin [source branch]
“等等!”
git fetch origin master:master
拉取最新版本的master,而无需检出。
因此,您需要做的是:
git fetch origin master:master && git rebase master
👌
git fetch
需要检出母版就更新母版?除了git fetch
不git merge
更新吗?因此,如果我们结帐master
,它将没有最新更新。所以,是不是很短,而在功能分支做,git fetch
然后git rebase origin/master
?我们不能这样做,git rebase master
因为这将尝试从master
工作空间中重新建立基础,我们需要origin/master
从未合并但位于本地的位置获取信息。