【问题标题】:Staging modified files according to their status with git根据 git 的状态暂存修改过的文件
【发布时间】:2010-09-03 19:22:35
【问题描述】:

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

git init
git add . 

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

git status

得到以下结果。

# (使用“git add/rm ...”来更新将要提交的内容) # (使用 "git checkout -- ..." 丢弃工作目录中的更改) # # 删除:bash/_bash_profile # 删除:bash/_bashrc # 修改:functions.sh # 修改:readme.txt # # 未跟踪的文件: # (使用“git add ...”来包含将要提交的内容) # # 重击/重击/ # 模板/

现在,我可以完全按照“git status”的指示去做。

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

  • git rm bash/bash_profile

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

  • git add functions.sh

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

  • 是否有一个 git 命令可以根据其状态暂存每个必要的文件? (删除或添加)
  • 如果没有,是否有任何简单的方法来暂存所有文件,而不是一个一个地运行“git add”或“git rm”?

【问题讨论】:

    标签: git


    【解决方案1】:

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

    git add -u
    

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

    git add .
    

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

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

    查看man page 了解更多信息。

    【讨论】:

    • git add -A 将执行新文件,以及删除和更新,如-u
    【解决方案2】:

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

    git commit -a
    

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

    git add -u
    

    这个updates 暂存文件集将对跟踪文件进行所有更改。但是,它不会提取新的未跟踪文件 - 为此,您只需再次 git add .

    【讨论】:

      【解决方案3】:

      进入 git-add 交互模式:

      git add -i
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-23
        • 1970-01-01
        • 2014-08-16
        • 2020-08-23
        • 1970-01-01
        • 2012-08-26
        • 1970-01-01
        相关资源
        最近更新 更多