我已经做到了:
在Github上创建了一个存储库,在其中做了一些提交并推送,但是我遇到了麻烦。
我克隆了原始存储库(而不是fork),并在本地进行了提交。
现在我想将本地提交推送到我的派生存储库中,以发出拉取请求。
因此,我将克隆的存储库的源设置为分叉的远程计算机。
git remote set-url origin https://github.com/MY-USERNAME/REPOSITORY.git
现在,我要使本地存储库完全覆盖远程服务器。正确的做法是什么? git push --force
?
答案 0 :(得分:0)
问题在于git只能有一个名为master
的分支。如果您分叉一个仓库,请添加一个新的提交,如果其他人也创建了一个新的提交,然后再推送它,则会出现错误。
如果目标是发出拉取请求,请使用新名称创建一个新分支,然后推送该新分支。在Web服务器上,在新分支和主服务器之间创建完整请求。
除非您确实想在线删除提交,否则不要push --force
。即使是您的fork,此提交也是原始存储库的一部分,没有理由将其删除。
正确的做法是创建一个命名正确的功能分支并执行拉取请求。
答案 1 :(得分:0)
如果我对您的理解正确,那么您在github上有一个remote
,您希望将其完全丢弃。
如果您不关心丢失遥控器的历史记录
只需删除github上的存储库,再次对其进行分叉,然后将您的更改推送到该干净的fork远程即可。这样,您就不必为git push --force
通常带来的所有陷阱而苦恼。
如果您确实想丢失遥控器的历史记录
从坏状态remote
中拉出,然后创建一个包含好状态的新提交。由于此最新的提交将覆盖所有(更改的)文件,因此它应等效地工作,而不会留下不良的历史记录。
git push --force
的问题在于,您可能以这样的方式更改历史记录,即您的fork不再对应于原始存储库。通常最好找到一种无需强制推动的方法。