从一个分支中删除文件的Git操作

20

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


如果您能提供执行的命令(例如创建一个简单的演示存储库以展示问题:'git init; touch bla; git add bla; git commit -m'bla'; git checkout -b A; git rm bla; …'),将非常有助于准确地查看问题。 - knittl
2个回答

23

使用 Git 删除文件并保存项目状态(git commit),文件只会在该提交版本及其子版本中删除(也就是说,只会在该分支中删除)。如果将该分支合并到另一个分支中,则有可能会删除该文件(除非在另一个分支中对其进行更改)。

如果删除文件后不进行提交,然后切换分支,Git 将应用当前的更改集到另一个分支中,在您的情况下,也会在那里删除该文件。提交删除操作可以避免您所看到的问题。


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

1
这是非常糟糕的建议。git reset --hard会将当前分支指针移动到指定的提交。这与git checkout所做的非常不同,即将HEAD设置为一个分支(或提交/标签)并检出该树,然后重新应用更改(如果可能,无需文本合并)。 - knittl
好的,我同意当谈论新手的基本用例时提到“reset --hard”有点危险。但无论如何,我认为出于演示目的,这是一个非常好的例子,可以理解工作树和分支之间的区别(这更或多或少是问题,对吧?)。 - Boris Bucha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接