安全覆盖远程分支(原点)

时间:2017-04-12 17:21:44

标签: git github git-push

我有一个与其远程对手分道扬的本地分支机构。我想保留本地更改,只需删除远程分支,我不再需要远程。我想知道通过简单地使用

“覆盖”远程分支是多么安全
git push -f

这样安全吗?它会删除远程分支并在我的本地分支上创建一个新分支吗?

有更好的方法吗?我需要以自动方式(使用shell脚本)执行此操作,因此我无法真正手动转到Github,删除分支然后推送。

具体而言,本地分支偏离遥控器的原因是因为我已经调用了

git reset --soft <another-branch>

2 个答案:

答案 0 :(得分:1)

它不会&#34;删除&#34;远程分支。但是,远程分支现在将指向您的分叉本地HEAD。只要您对自己想要做的事情充满信心,强制推动就很好。唯一值得一提的是,你可以从你的旧远程HEAD中获得一些提交,最终将获得GC。

答案 1 :(得分:1)

您的问题(以及某些评论中的后续跟踪)表明对git中 分支的一些疑惑。其他源控制系统可能让您接受培训,认为分支是一系列的增量;在git中,这是完全不同的事情。

分支只是提交的指针。分支机构本身对变化历史一无所知; git通过从分支指向的提交开始(包含最新的更改)并通过&#34; parent commit&#34;来查找信息。指向查找其他提交的指针(包含早期更改)。

分支和提交行是完全不同的东西。更新分支(例如推送),覆盖它(强制它指向不同的提交),甚至删除它......这些都不会对提交系列产生任何影响。并且它是确保历史完整性的一系列提交。

它是&#34;安全&#34;?是。历史还会干净吗?是的,虽然远程分支上以前的提交可能无法再访问(意味着它们最终可能被gc删除)。

唯一需要注意的是其他用户是否拥有相同远程仓库的克隆。他们将需要一个非常类似于git rebase文档中解释的恢复过程(&#34;从上游rebase恢复&#34;或某些此类)。