Git推送到远程存储库,丢弃最新提交并替换为本地提交

时间:2018-10-26 13:08:37

标签: git github

我已经做到了:

  • 在Github上创建了一个存储库,在其中做了一些提交并推送,但是我遇到了麻烦。

  • 我克隆了原始存储库(而不是fork),并在本地进行了提交。

现在我想将本地提交推送到我的派生存储库中,以发出拉取请求。

因此,我将克隆的存储库的源设置为分叉的远程计算机。

git remote set-url origin https://github.com/MY-USERNAME/REPOSITORY.git

现在,我要使本地存储库完全覆盖远程服务器。正确的做法是什么? git push --force

2 个答案:

答案 0 :(得分:0)

问题在于git只能有一个名为master的分支。如果您分叉一个仓库,请添加一个新的提交,如果其他人也创建了一个新的提交,然后再推送它,则会出现错误。

如果目标是发出拉取请求,请使用新名称创建一个新分支,然后推送该新分支。在Web服务器上,在新分支和主服务器之间创建完整请求。

除非您确实想在线删除提交,否则不要push --force。即使是您的fork,此提交也是原始存储库的一部分,没有理由将其删除。

正确的做法是创建一个命名正确的功能分支并执行拉取请求。

答案 1 :(得分:0)

如果我对您的理解正确,那么您在github上有一个remote,您希望将其完全丢弃。

如果您不关心丢失遥控器的历史记录
只需删除github上的存储库,再次对其进行分叉,然后将您的更改推送到该干净的fork远程即可。这样,您就不必为git push --force通常带来的所有陷阱而苦恼。

如果您确实想丢失遥控器的历史记录
从坏状态remote中拉出,然后创建一个包含好状态的新提交。由于此最新的提交将覆盖所有(更改的)文件,因此它应等效地工作,而不会留下不良的历史记录。

git push --force的问题在于,您可能以这样的方式更改历史记录,即您的fork不再对应于原始存储库。通常最好找到一种无需强制推动的方法。