在Git中清理未分阶段删除文件的简便方法

All*_*ate 36 git

我经常使用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
Run Code Online (Sandbox Code Playgroud)

我通常会选择所有已删除的文件并在文本编辑器中编辑它们,以产生如下:

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
Run Code Online (Sandbox Code Playgroud)

然后我将其扔回控制台.

有没有办法在不必复制/粘贴的情况下执行此操作?

lar*_*sks 54

如果我没有理解你的问题,你想提交你删除...也就是说,要执行相当于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
Run Code Online (Sandbox Code Playgroud)

跑步git add -u会让你这样:

# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    file2
#   deleted:    file3
#   deleted:    file4
#   deleted:    file5
Run Code Online (Sandbox Code Playgroud)

此时提交将做正确的事情.


Kur*_*tal 5

git add -u将更新跟踪文件的状态。