一个“和”git add“。

命令git add [--all|-A]看起来与git add .相同git add . 。 它是否正确? 如果不是,他们有什么不同?


对于Git 2.x版本 ,请参阅下面的答案。


概要:

  • git add -A 所有阶段

  • git add . 阶段新的和修改的, 没有删除

  • git add -u阶段修改和删除, 没有新的


  • 详情:

    git add -A相当于git add .; git add -u git add .; git add -u

    关于git add .的重要一点git add . 是它看着工作树,并将所有这些路径添加到阶段性更改中,如果它们被更改或者是新的并且不被忽略,它就不会执行任何'rm'操作。

    git add -u查看所有已经跟踪的文件,并且如果这些文件不同或已被删除,则对这些文件的更改进行分级。 它不会添加任何新文件,它只会更改已经跟踪的文件。

    git add -A是做这两件事的方便捷径。

    你可以用这样的东西来测试差异(注意,对于Git版本2.x,你的输出为git add . git status 将会不同):

    git init
    echo Change me > change-me
    echo Delete me > delete-me
    git add change-me delete-me
    git commit -m initial
    
    echo OK >> change-me
    rm delete-me
    echo Add me > add-me
    
    git status
    # Changed but not updated:
    #   modified:   change-me
    #   deleted:    delete-me
    # Untracked files:
    #   add-me
    
    git add .
    git status
    
    # Changes to be committed:
    #   new file:   add-me
    #   modified:   change-me
    # Changed but not updated:
    #   deleted:    delete-me
    
    git reset
    
    git add -u
    git status
    
    # Changes to be committed:
    #   modified:   change-me
    #   deleted:    delete-me
    # Untracked files:
    #   add-me
    
    git reset
    
    git add -A
    git status
    
    # Changes to be committed:
    #   new file:   add-me
    #   modified:   change-me
    #   deleted:    delete-me
    

    下面是快速了解的表格:

    Git版本1.x在这里输入图像描述

    Git版本2.x在这里输入图像描述

    长形标志:

  • git add -A相当于git add --all
  • git add -u相当于git add --update
  • 进一步阅读:

  • 初学者Git:明确的实践指南
  • 有15分钟,想学习Git? (以交互方式)
  • http://pcottle.github.io/learnGitBranching/
  • http://www.wei-wang.com/ExplainGitWithD3/

  • 使用Git 2.0, git add -A是默认的: git add . 等于git add -A .

    git add <path>现在与“ git add -A <path> ”相同,因此“ git add dir/ ”会注意从目录中删除的路径并记录删除。
    在旧版本的Git中,“ git add <path> ”用于忽略删除。

    你可以说“ git add --ignore-removal <path> ”中只添加添加或修改路径<path> ,如果你真的想。

    git add就像git add :/ (添加顶级git repo文件夹中的所有内容)。
    请注意,git 2.7(2015年11月)将允许您添加名为“ : ”的文件夹!
    见Junio C gitstergitster )的commit 29abb33(2015年10月25日)。


    请注意,在讨论git add .时,首先启动git 2.0(2014年第一季度或第二季度) git add . (工作树中的当前路径),则必须使用' . '在其他git add命令中。

    这意味着:

    git add -A . ”相当于“ git add .; git add -u .

    (注意额外的' . '为git add -Agit add -u

    因为git add -Agit add -u会在整个工作树上运行(仅启动git 2.0),而不仅仅是当前路径。

    这些命令将在Git 2.0中的整个树上运行,以便与“ git commit -a ”和其他命令保持一致 。 因为没有任何机制可以让“ git add -u ”的行为就像“ git add -u . ”一样,对于习惯于“ git add -u ”(不含pathspec)的用户来说,更新索引仅适用于路径在当前的子目录中开始训练他们的手指在Git 2.0到来之前明确说出“ git add -u . ”。

    如果这些命令在没有pathspec的情况下运行,并且在当前目录之外进行本地更改时会发出警告 ,因为在这种情况下,Git 2.0中的行为将与当前的版本不同。

    链接地址: http://www.djcxy.com/p/115.html

    上一篇: A" and "git add ."

    下一篇: How can I add an empty directory to a Git repository?