- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我经常读到有关如何强制推送的信息,远程存储库中所有未被 pull 的提交都会丢失。如果一个人不需要特定的提交,他也可以创建一个新的分支,这在我看来更常见,因为你不会丢失数据,即使你现在不需要特定的代码或其他任何东西,也许你以后会需要它,我看不出有什么理由要毁掉它。
所以我的问题是我必须进行强制推送的原因是什么?
最佳答案
I often read about how to force push, and that all commits in the remote repository that are not pulled get lost
不完全是:旧的提交仍然是 referenced in the git reflog
.
即使你强制推送到 GitHub,你仍然可以看到(作为 repo 所有者)被新历史覆盖的先前分支 HEAD SHA1。参见“Does GitHub remember commit IDs?”。
那还是你have to contact GitHub support .
So my question is what reason could I have to do a force push?
只要你是唯一一个在分支上工作的人(或者在 repo 上,在 fork 的情况下),你可以强制推送。
这是 common in case of a Pull Request ,其中 Web GUI 足够智能,可以自行更新以考虑新的历史记录:在将其重新定位到 upstream/master 之上之后,您可以强制推送自己的分支(再次假设您是唯一一个在它上面工作的人)
(上游是被 fork 的原始仓库)
这是 triangular workflow 的一部分.
VonC mentioned in his answer that the data is still present also after force push, so you can not remove sensitive information, or did I miss something?
要删除远程仓库中的敏感信息,您需要在远程服务器端执行一些命令:
$ git reflog expire --expire=now --all
$ git gc --prune=now
这意味着,将敏感数据推送到 GitHub 时,you have to contact GitHub support .
关于git - 为什么/什么时候应该用力 push ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34995726/
我是一名优秀的程序员,十分优秀!