我总是听到它有些可怕而且我永远不应该做的事情。例如,以下是SourceTree中拉取对话框的外观:
所以我很好奇,如果我推动改变,那么会发生什么以及会有多糟糕,然后重新推动并再次推动它们?如果我以这种方式打破它,如何修复存储库?
答案 0 :(得分:12)
什么都不会发生,但你的下一次推动将不被接受。
除非你强行推动。 这也不会破坏远程存储库,所以它也不是那么糟糕。
当你有更多的人使用这个回购时,情况会变糟。 重写历史可能会给那些从远程提取新变化的人带来一些混乱。特别是如果他们对git没有很好的了解。 根据本地存储库的状态,拉动重写远程分支的人可能会发生不同的事情。
因此,如果有人将工作中的功能X和你改变了,他根据他的改变的代码,他可能会得到至少爆冷彻头彻尾的愤怒取决于你如何他的工作多而过时。
答案 1 :(得分:2)
在您在SourceTree中列出的方案中,SourceTree会根据您从遥控器中提取的更改来修改尚未推送的本地提交。
如果您在使用THAT选项之前已经推送了更改,那么这些更改就不会因为它们已经在遥控器中而被重新定位。
唯一的例外是,如果您有多个遥控器,并且已将更改推送到一个遥控器,然后从另一个遥控器执行拉/换 - 这可能会导致严重问题。
在拉动过程中是否应该进行反转是一个有争议的话题。我不推荐它,但它通常是安全的。 https://developer.atlassian.com/blog/2014/12/pull-request-merge-strategies-the-great-debate/