【问题标题】:git remove files from only one branchgit 只从一个分支中删除文件
【发布时间】:2023-03-22 07:29:01
【问题描述】:

当我从一个分支中删除文件时,它会从所有分支中删除。我该怎么办?

【问题讨论】:

  • 能够看到确切的问题,如果你能给出你执行的命令将会有很大帮助(也许创建一个简单的演示库来展示问题:git init; touch bla; git add bla; git commit -m'bla'; git checkout -b A; git rm bla; …

标签: git version-control git-branch


【解决方案1】:

当使用 git 删除文件并保持该项目状态 (git commit) 时,它只会在该提交及其子项中被删除(也就是说:在该分支中)。当将该分支合并到另一个分支时,很可能该文件将被删除(除非在另一个分支中更改)。

当删除一个文件而不是提交它然后切换分支时,git 会将您当前的更改集应用到另一个分支,在您的情况下,也删除那里的文件。提交删除应该可以避免您看到的问题

【讨论】:

    【解决方案2】:

    不,这不是真的。我认为您的困惑来自分支之间的切换。当您执行“git checkout”时,它会保留您的工作树,因此您刚刚删除的文件在切换后不会重新出现。 可以切换到不同的分支并重置您所做的所有更改(删除文件)。你可以通过例如在切换后写“”git reset --hard”来做到这一点。

    【讨论】:

    • 这是一个非常糟糕的建议。 git reset --hard 会将当前分支指针移动到指定的提交。这与git checkout 所做的非常不同,即将 HEAD 设置为一个分支(或提交/标记)并检查该树,然后重新应用更改(如果可能没有文本合并)
    • 好的,我同意在谈论新手的基本用例时,提及“reset --hard”有点危险。无论如何,我认为出于演示目的,这是一个很好的例子,可以理解什么是工作树和什么是分支之间的区别(这或多或少是个问题,对吧?)。
    猜你喜欢
    • 2015-04-04
    • 2021-08-02
    • 1970-01-01
    • 2021-03-27
    • 2020-03-23
    • 2012-02-24
    • 2015-06-17
    • 1970-01-01
    • 2014-10-02
    相关资源
    最近更新 更多