使用git根据状态暂存已修改的文件

时间:2010-09-03 19:22:36

标签: git

我开始对目录进行版本控制,如下所示。

git init
git add . 

然后,我进行了修改,添加/删除/更改文件。在我完成之后,我运行

git status

获得以下结果。

#   (use "git add/rm ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
# deleted:    bash/_bash_profile
# deleted:    bash/_bashrc
# modified:   functions.sh
# modified:   readme.txt
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
# bash/bash/
# template/

现在,我可以完全按照'git status'的要求去做。

对于已删除的文件运行git rm。

  • git rm bash / bash_profile

对于修改/添加的文件,运行git add

  • git add functions.sh

我的问题是:我该如何自动化?我看到 git已经知道对修改后的文件执行什么操作

  • 是否有git命令根据状态暂存每个必需的文件? (删除或添加)
  • 如果没有,有没有简单的方法来暂存所有文件,而不是逐个运行'git add'或'git rm'?

3 个答案:

答案 0 :(得分:2)

是的,有一个简单的方法:

git add -u

这将在当前目录中添加所有修改(如果您想要所有内容,请从您的仓库的顶层运行它)。但是,它不会添加任何未跟踪的文件。如果你也想这样做,你可以使用:

git add .

将添加当前目录中的所有文件。 (这意味着它将获取修改和未跟踪的文件,但不会删除add -u)。

确保在执行此操作之前和之后检查git status,以确保您获得了想要上演的内容。如果您更喜欢commit -a,请更加小心地检查状态。添加你不想提交的内容非常容易。

有关详细信息,请查看man page

答案 1 :(得分:2)

如果您在提交时传递-a标记,则在提交之前将自动为您暂存所有未分级的更改:

git commit -a

如果您还不想提交,可以使用-u标志代替git-add:

git add -u

u pdates分阶段文件集将全部更改为跟踪文件。但是,它并没有获取新的未跟踪文件 - 为此,您只想再次git add .

答案 2 :(得分:1)

输入git-add交互模式:

git add -i

然后输入u*q。这将更新,暂存所有更改并退出。