【问题标题】:Best practice for nuking a local Git branch from orbit?从轨道核对本地 Git 分支的最佳实践?
【发布时间】:2020-03-16 19:04:04
【问题描述】:

我目前正在教我的一些同事 Git。他们都是艺术家,他们中的大多数人可能永远不需要提交文件。然而,能够提取项目的最新版本并测试其外观对他们来说很有价值。

他们中的许多人遇到了一个问题,他们上一次在一个月前撤出项目并测试了一些东西,但是当他们需要将项目更新到最新的 master 时,他们遇到了一堆合并冲突。我想给他们一个他们可以运行的简单命令,基本上说“我不关心我所做的任何更改,我只想回到 master”,这样他们就可以执行 git pull 而不会出错。

当我使用过 git 时,我通常会这样做:

git add -A 然后git stash

但是,现在我正在向其他人教授 git,我想确保我不会将他们引向错误的道路。我看到了使用git resetgit checkout 的其他建议,但是否有一种普遍接受的最佳方式来表达“我不在乎我的更改,将它们从气闸中炸开”?

【问题讨论】:

  • 让他们使用 GUI 应用程序
  • 这里根本不需要git pullgit fetch && git reset --hard origin/master 非常简短。 (如果他们有想要保留的重要更改,则极具破坏性!)
  • @pkamb 是的,我意识到这非常重要。到目前为止,我已经尝试过 SourceTree 和 Git Extensions,但我愿意接受建议。 abdullahalali 没有,很遗憾没有。我不希望他们合并更改,通常他们会放弃它们。和 torek 这实际上听起来很完美。我正在寻找具有高度破坏性的东西:D
  • @AdamL:当您想将用户限制为一些特定的“安全”命令时,我怀疑 GUI 是否对非技术用户有用。使用 Git GUI 仍然需要所述用户了解 Git 心智模型。如果他们对 Git 模型没有直观的理解,那么 GUI 只会让非技术人员轻松点击进入他们无法摆脱的麻烦。我建议为您的非技术用户写一些git aliases,告诉他们这些是他们应该使用的唯一命令。

标签: git


【解决方案1】:

如果你真的想放弃所有本地更改,那么:

git fetch && git reset --hard origin/master

请注意,这不会像存储命令那样创建本地更改的备份,因此任何本地更改都将丢失且无法恢复。

但是,对于具有提交访问权限的人来说,更好的工作流程会避免造成人们从存储库中提取必须重置其本地存储库的情况。您可以通过确保 master 只向前移动,用户不能强制推送到 master,并确保自动生成的文件在 gitignore 中来做到这一点。

【讨论】:

    【解决方案2】:
    git checkout . && git pull origin master
    

    详细说明

    放弃最新的更改:git checkout。

    从主源接收更改:git pull origin master

    【讨论】:

    • 正如Q中所说:git pull origin master导致合并冲突。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2015-12-10
    相关资源
    最近更新 更多