如果我在推送后变基会发生什么?
What happens if I rebase after pushing?
我总是听说这是一件可怕的事情,是我永远不应该做的事情。例如,这是 SourceTree 中拉对话框的样子:
所以我很好奇,如果我推送更改,然后重新调整并再次推送它们,会发生什么?会有多糟糕?如果我以这种方式破坏存储库,如何修复存储库?
什么都不会发生,但你的下一次推送将不会被接受。
除非你强制推送。
这也不会破坏远程存储库,所以也不错。
当你有更多人使用这个 repo 时,事情就变糟了。
重写历史可能会给其他人带来一些混乱,因为他们将从远程获取新的更改。特别是如果他们对 git 没有很好的了解。
根据本地存储库的状态,拉取重写的远程分支的人可能会发生不同的事情。
因此,如果某人要处理功能 X,而你更改了他所做更改所基于的代码,他可能至少会感到沮丧甚至是彻底的愤怒,这取决于你让他的工作有多少过时了。
在您在 SourceTree 中列出的场景中,SourceTree 将尚未推送的本地提交变基到您从远程拉取的更改之上。
如果您在使用 THAT 选项之前已经推送了更改,则这些更改将不会重新设置基准,因为它们已经在远程中。
唯一的例外可能是如果您有多个遥控器,并且已将更改推送到一个遥控器,然后从另一个遥控器执行 pull/rebase - 这可能会导致严重问题。
在拉动过程中是否应该变基是一个有争议的话题。我不推荐它,但它通常是安全的。 https://developer.atlassian.com/blog/2014/12/pull-request-merge-strategies-the-great-debate/
我总是听说这是一件可怕的事情,是我永远不应该做的事情。例如,这是 SourceTree 中拉对话框的样子:
所以我很好奇,如果我推送更改,然后重新调整并再次推送它们,会发生什么?会有多糟糕?如果我以这种方式破坏存储库,如何修复存储库?
什么都不会发生,但你的下一次推送将不会被接受。
除非你强制推送。 这也不会破坏远程存储库,所以也不错。
当你有更多人使用这个 repo 时,事情就变糟了。 重写历史可能会给其他人带来一些混乱,因为他们将从远程获取新的更改。特别是如果他们对 git 没有很好的了解。 根据本地存储库的状态,拉取重写的远程分支的人可能会发生不同的事情。
因此,如果某人要处理功能 X,而你更改了他所做更改所基于的代码,他可能至少会感到沮丧甚至是彻底的愤怒,这取决于你让他的工作有多少过时了。
在您在 SourceTree 中列出的场景中,SourceTree 将尚未推送的本地提交变基到您从远程拉取的更改之上。
如果您在使用 THAT 选项之前已经推送了更改,则这些更改将不会重新设置基准,因为它们已经在远程中。
唯一的例外可能是如果您有多个遥控器,并且已将更改推送到一个遥控器,然后从另一个遥控器执行 pull/rebase - 这可能会导致严重问题。
在拉动过程中是否应该变基是一个有争议的话题。我不推荐它,但它通常是安全的。 https://developer.atlassian.com/blog/2014/12/pull-request-merge-strategies-the-great-debate/