大佬教程收集整理的这篇文章主要介绍了使用 BitBucket 的 Git Rebase,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了一个让我大吃一惊的问题。我的分支中有与 master 冲突的代码(在我的情况下是开发)。这不是什么大问题,因为它实际上只有 7 行代码,很容易识别。
BitBucket 很友好地告诉我,为了解决合并冲突,我需要执行以下步骤。
<branch in question>
<master>
(在我的例子中开发)
<current branch>
在分支 <current branch>
您的分支和“<current branch>
”有
分歧,分别有 4 和 3 个不同的提交。
(使用“git pull”将远程分支合并到你的分支中)
无需提交,工作树干净
好的没问题,让我们运行 git pull... 我们必须重新开始,就好像我从未解决过合并冲突一样。
我正在阅读其他有类似问题的评论,发现有人推送带有 -f 标志(强制)的代码。我尝试过,当然它有效,但是我的 7 行更改变成了多个文件更改。合并冲突消失了,但我担心会因不必要的提交而使主(开发)分支膨胀。
TL;DR:你需要 git push --force-with-lease origin HEAD
。
您遇到此问题是因为您正在使用 rebase。 (Bitbucket 在这里不相关;我剪掉了那个标签。)
rebase 操作的核心是对 Git 的以下形式的命令:
完成后,旧的提交消失了(ish1),您现在使用的是新的和改进的替换提交。
当您运行 git push origin HEAD
时,您的 Git 会将您的名称 HEAD
解析为您当前的分支名称(无论该名称是什么),并且就像您运行 git push origin branch
一样。这让你的 Git 在 origin
调用他们的 GIt,发送你的新提交,然后礼貌地询问他们是否愿意,如果可以,设置 他们的 分支名称标识与您的 分支名称标识的相同的最后一次提交。
因为你使用了rebase,这个请将分支名称______(填写名称)设置为_______(填写hash ID)相当于对他们的 Git of形式:扔掉我扔掉的旧提交,使用这些相同的替换提交。但是此时他们不知道您的新替换提交是 替换。他们已经完全忘记了他们之前告诉过你的任何事情。他们只看到您要求他们丢弃一些提交。所以他们说不!如果我这样做,我会失去一些提交。
为了克服他们不愿放弃提交的问题,您必须向他们发送更有力的命令,而不是礼貌的请求。你必须告诉他们:是的,我知道这可能会丢弃一些提交。无论如何都要这样做!为此,您必须在 --force
命令中使用 --force-with-lease
或 git push
选项。
--force-with-lease
选项在某种意义上是“更安全的”:当您使用此选项时,您的命令具有以下形式:我希望您更新 _____(用分支名称填空) )。我相信你最近的提交是_______(用哈希 ID 填空)。如果是这样,扔掉一些提交;使用______(用哈希ID 填空)。 你的Git 填满所有的空,然后发送过来。如果自上次您的 Git 与他们的 Git 对话以来,他们的 Git 还没有累积任何新提交,那么您的替换提交就是正确的替换,如果他们遵守这个强有力的命令,那就成功了。
--force
选项跳过安全检查:将 ______(用名称填空)更新为 _____(用哈希 ID 填空)!只要没有人else 在您开始工作后添加了 new 提交,这个强大的命令与更谨慎的 --force-with-lease
实现了相同的结果。
当你使用 git pull
而不是 git push
和一个强制选项时,你会得到他们的最新提交——这是你之前在替换时抛出的那些——并且现在你有同样的问题。无论是使用 fetch-and-rebase pull 还是 fetch-and-merge pull,您都可以通过任何类型的 pull 获得它。 (我个人建议避免 git pull
:自己运行 git fetch
,然后根据您的意图自己运行 git merge
或 git rebase
。然后当它出错时,你知道哪个命令实际上失败了。当你使用 git pull
为你运行两个 Git 命令,并且某些东西失败时,你甚至可能不知道哪个 Git 命令失败了。但是有些人发现输入一些额外的字符很困难。根据我的答案的长度,您可以看到,我没有这个特殊问题。?)
1Git 对提交非常贪婪,不愿放弃。出于这个原因,并且作为备份以防您改变主意,旧的提交还没有真正消失。默认情况下,在它们真正消失之前至少有 30 天。不过,在 30 天的窗口中恢复它们是有点痛苦的。
以上是大佬教程为你收集整理的使用 BitBucket 的 Git Rebase全部内容,希望文章能够帮你解决使用 BitBucket 的 Git Rebase所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。