【问题标题】:Is there a danger of using "git push --force" if I am working on a project alone?如果我一个人在做一个项目,使用“git push --force”会有危险吗?
【发布时间】:2021-05-11 05:41:18
【问题描述】:

如果我独自从事一个项目,使用git push --force 是否有危险?我知道与团队合作时存在危险。但是如果我一个人呢?

【问题讨论】:

  • 就像我在问题中所说的,我一个人。谁想成为我的情人?

标签: git git-commit git-push


【解决方案1】:

使用git push --force 时的主要危险确实是被其他开发人员松动。所以它不应该发生。

但是你仍然可以错误地丢失自己的提交......

正如@Prihex 在 cmets 中正确提到的那样,在这种特定情况下,您错误地丢失了自己的一个提交,您仍然可以通过查看您 @987654324 的分支的 git reflog 来检索它@

PS:另外,请注意,最好使用git push --force-with-leasegit push --force-if-includes 来降低意外松散提交的可能性(请参阅documentation

【讨论】:

  • 即使提交因为强制推送而丢失,也可以通过git reflog 恢复。随意。
  • @Prihex 确实,如果您一个人,那么 reflog 将使您免于丢失提交。我将更新我的答案以明确这一点。谢谢提醒!
【解决方案2】:

如果你强制推送到已经部署的分支,例如 master 或 main,你不仅可能会丢失自己的工作,而且还有可能不知道发布了哪些代码。这将使在生产中发现问题变得非常困难。

所以不要强行推送你用于发布的分支。当你是唯一的开发者时也不会。

大多数 git 托管可以阻止对特殊分支的强制推送。建议启用它以防止这种危险。

【讨论】:

    【解决方案3】:

    正如 Philippe 所提到的,尽管您可能会丢失自己的提交(例如,git rebase 或之后只是 git reset HEAD~git push --force),但您还不错,但并非所有内容都会丢失,因此请记住这一点。

    如果您通知用户(如果有的话),在相对较小的用户群中维护仍然很容易。用户群越大,越痛苦,因为git pull --force 不是自动发送的,来自普通git pull 的消息对于初学者来说可能看起来很神秘。

    最好在git push --force 之前先尝试git fetch 并查看树是否未更改(由其他人或您在另一台机器上)以防止意外删除已经新的提交在远程仓库上。

    请注意,除非您在之后修剪 repo,否则提交仍然存在因此您只需记住(或在控制台/gui/screenshot/ 中记录日志)即可轻松恢复以前的状态...)HEAD 提交(7 个字符就足够了,在小型仓库中我什至可以使用 3 或 2 个字符)或 simply at least one commit from the tree 你删除并简单地

    git checkout <hash>
    git checkout -b my-restored-branch
    git push -u origin my-restored-branch
    

    但是,一旦您修剪了 repo(或由于大小/配置而自动修剪),事情就会变得非常复杂,并且需要像处理原始 git 对象一样需要手动注意(据我所知)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 2020-03-27
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 2015-12-10
      相关资源
      最近更新 更多