0

之前可能已经问过这个问题,但是我似乎在 Stackoverflow 或互联网上的其他地方找不到类似的问题。我正在学习 git 并试图围绕这些概念展开思考。

我遇到的问题是如何从我的工作目录或树中删除文件或目录,并同时删除其“历史记录”。我还没有开始将文件推送到任何远程存储库。

我开始如下;

  1. 猫 > 文件 1.txt
  2. 混帐添加文件1.txt
  3. git commit -m "文件 1 提交"
  4. rm文件1.txt
  5. git status 向我显示消息 Changes not staged for commit: deleted: file1.txt

问题

  1. git rm 和 rm 有什么区别?我的理解是前者在git的历史中创建了一条删除记录
  2. 删除文件是否总是记录在 git 的历史记录中?
  3. 如何删除文件以及提交历史记录?
  4. 如果我有多个提交,这会有什么不同?
  5. 删除提交时会遇到哪些问题?
4

2 回答 2

0
  1. rm只是从文件系统中删除一个文件。如果git正在跟踪它,您需要git rm阻止它这样做。

  2. 如果它正在跟踪它,是的,删除它也将成为该文件的跟踪历史记录的一部分。

  3. 重写您的分支的历史记录以不包括文件的初始提交。在您的情况下,这就像git rebase -i将删除文件的提交压缩到添加文件的提交一样简单。

  4. 是的,您需要将它们全部压扁。或者,随着变基的进行,只需通过选择已删除的修订来修复所有冲突。

  5. 与临时修改文件的提交有很多潜在的冲突。

于 2013-07-01T21:32:42.600 回答
0

我见过的最好的指南之一来自 github

https://help.github.com/articles/remove-sensitive-data

simple如果您的最后一次提交是使用变基并强制推送它,则可以使用更多方法

git rebase -i
git push origin +master

还有你的问题。

  1. rm是系统“删除”命令。Git 的 RM 与 gits 内部有关。如果您从硬盘驱动器中删除文件,Git 将拥有它的副本并且能够恢复它。

  2. 如果提交,所有更改都会记录在 gits 历史记录中。如果你创建一个文件然后删除它而不提交到 git,Git 不知道它,因此没有记录

  3. 上面的链接包含有关从所有提交中删除文件的信息

  4. 和上面一样

  5. 如果其他人正在使用它或从您删除的提交中分支,git 将难以合并更改。通常很少有你需要从 git 中删除的情况

于 2013-07-01T21:33:40.047 回答