我经常使用IDE或命令行(不是通过git mv)在git存储库中移动文件。
结果我最终会在下次提交时删除几个未删除的文件,如下所示:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: test.html
#
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: css/bootstrap.css
# deleted: css/bootstrap.min.css
# deleted: img/glyphicons-halflings-white.png
# deleted: img/glyphicons-halflings.png
# deleted: js/bootstrap.js
# deleted: js/bootstrap.min.js
我通常会选择所有已删除的文件并在文本编辑器中对其进行编辑,以生成:
git rm css/bootstrap.css
git rm css/bootstrap.min.css
git rm img/glyphicons-halflings-white.png
git rm img/glyphicons-halflings.png
git rm js/bootstrap.js
git rm js/bootstrap.min.js
然后我将其扔回控制台。
有没有办法在不必复制/粘贴的情况下执行此操作?
答案 0 :(得分:44)
如果我正确理解了您的问题,您希望提交删除内容...也就是说,您希望对显示为的所有文件的所有执行等效的git rm
删除。 git clean
不会这样做。
您可以运行git add -u
:
仅匹配索引中已跟踪的文件 而不是工作树。这意味着它永远不会是新的 文件,但它将修改跟踪文件的新内容 如果相应的话,它将从索引中删除文件 工作树中的文件已被删除。
这将获取对跟踪文件的所有更改,包括删除。所以,如果你从这开始:
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file2
# deleted: file3
# deleted: file4
# deleted: file5
运行git add -u
会让您知道:
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: file2
# deleted: file3
# deleted: file4
# deleted: file5
此时提交将做正确的事。
答案 1 :(得分:3)
我通常会提交我更改过的文件。
如果我删除了冗余文件,我会在此之后执行以下操作:
git commit -a -m 'deleted redundant files'
答案 2 :(得分:1)
git add -u
将更新跟踪文件的状态。