git status
显示了一些已修改的文件和一些已删除的文件。我想首先提交修改后的文件,然后提交已删除的文件。我在git add
中看不到任何可以让我这样做的选项。我该怎么办?
编辑:正如所指出的那样,git add
无论如何都不会暂存已删除的文件,因此git add .
会这样做。但它有包含未跟踪的文件的副作用,我也想避免。我已相应更改了问题的标题。
答案 0 :(得分:72)
以下命令应该可以解决问题:
git commit -a
或
git commit -am "commit message"
来自Pro Git书:
为git commit命令提供-a选项使Git在执行提交之前自动暂存已跟踪的每个文件
答案 1 :(得分:31)
git diff --name-only --diff-filter=M | xargs git add
答案 2 :(得分:16)
您可以使用:
git add -u
用于暂存自上次提交以来已修改的已跟踪文件。
来自git-add手册页:
-u
--update仅匹配索引中已跟踪的文件而不是工作树。这意味着它永远不会暂存新文件,但它会暂存已修改的跟踪文件的新内容,并且如果已删除工作树中的相应文件,它将从索引中删除文件。 如果没有,则默认为“。”;换句话说,更新当前目录及其子目录中的所有跟踪文件。
不确定何时添加了此功能。
答案 3 :(得分:3)
我可能会遗漏一些东西,但git add不包含已删除的文件,你必须使用git rm删除它们:
mkdir git-test
cd git-test
git init
touch a
touch b
touch c
git add .
git commit -m "Initial"
echo "a" > a
echo "b" > b
rm c
git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: a
# modified: b
# deleted: c
#
git add .
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: a
# modified: b
#
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: c
#
git commit -m "Changed"
git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: c
#
git rm c
git commit -m "Deleted"
git log显示了三次提交。
答案 4 :(得分:0)
我会小心使用git commit -a - 除非你确保你的.gitignore文件包含你不想添加的所有文件
我曾经多次使用过git commit -a,而且我不得不从git存储库中清理/删除临时文件等
答案 5 :(得分:0)
git 状态 在分支主 您的分支是最新的“origin/master”。
未为在此处输入提交而暂存的更改:
(使用“git add ..enter here
.”来更新将提交的内容)
(使用“git restore ...”放弃工作目录中的更改)
修改:src/components/Header.js
未向提交添加任何更改(使用“git add”和/或“git commit -a”)
如果我们只尝试添加特定的修改文件,那么使用 git add "Modified file" 会抛出错误 $ git add Header.js 致命:路径规范“Header.js”与任何文件都不匹配
所以我使用了这个并推送 git add -u // 更新修改后的文件。
git commit -m "Header.js"。
git push
这对我来说效果很好。