“git add -A”和“git add”之间的区别。-程序员宅基地

技术标签: github  git  

问:

git add [–all | -A] 和 git add . 有什么区别?

huntsbot.com – 高效赚钱,自由工作

答1:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

此答案仅适用于 Git 版本 1.x。对于 Git 版本 2.x,请参阅其他答案。

概括:

git add -A 阶段所有更改

混帐添加。暂存新文件和修改,不删除(在当前目录及其子目录上)。

git add -u 阶段修改和删除,没有新文件

细节:

git add -A 等同于 git add .; git add -u。

关于 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 add *之间的区别如何?

太糟糕了 git add -A -p 不能按预期工作(以交互方式询问未跟踪的文件)

请更新答案。它应该是:git add -A :/ 或 git add -A .

有关信息,在较新版本的 git 中,git add -u 已变为 git add -u :/,后一个参数是路径,允许您 -u 某些目录,:/ 处理整个树。

@CharlesBailey,Git 真的喜欢 无缘无故地让事情变得复杂。是否有一个真正的用例,某人会特别需要 git add -u 或 git add . 并且这样做可以让他的生活更轻松,即使在考虑了额外的心理税以确保没有同步问题?我想知道为什么 Git 不进一步将 add -u 拆分为两个单独的命令 add -u1 和 add-u2,其中一个适用于以数字开头的文件,另一个适用于以非数字开头的文件

答2:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

Git 版本 1.x

命令 新文件 修改文件 删除文件 描述 git add -A ️ ️ ️ 暂存所有(新的、修改的、删除的)文件 git add . ️ ️ 仅在当前文件夹中暂存新文件和修改文件 git add -u ️ ️ 仅暂存修改和删除文件

Git 版本 2.x

命令 新文件 修改文件 删除文件 描述 git add -A ️ ️ ️ 暂存所有(新的、修改的、删除的)文件 git add . ️ ️ ️ 暂存当前文件夹中的所有(新的、修改的、删除的)文件 git add --ignore-removal 。 ️ ️ 仅暂存新文件和修改文件 git add -u ️ ️ 仅暂存修改和删除文件

长格式标志:

git add -A 相当于 git add --all

git add -u 相当于 git add --update

进一步阅读:

Git 初学者:权威实用指南

学习 Git 的资源

学习 Git 分支

用 D3 解释 Git

谢谢你的桌子。有没有办法只添加修改过的文件。没有新文件或已删除文件

@Gokul:根据this post,您可以使用 git diff-files -z --diff-filter=M --name-only | xargs -0 git add 仅添加修改后的文件,但不能添加新文件或删除的文件。

这并不完全正确,因为 git add . 仅添加当前路径上的新文件。即,如果您有一个新目录 ../foo,git add -A 将暂存它,git add . 不会。

因此,git add . 等价于 git add -A .,即等价于 git add "*"

这应该是顶部/选定/固定的答案。 @cmcginty,如果你在 12 年后还在那里

答3:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

使用 Git 2.0, git add -A is default: git add . equals git add -A .。

git add 现在与“git add -A ”相同,因此“git add dir/”会注意到您从目录中删除的路径并记录删除。在旧版本的 Git 中,“git add ”会忽略删除。如果你真的想的话,你可以说“git add --ignore-removal ”来只在中添加添加或修改的路径。

git add -A 类似于 git add (add everything from top git repo folder)。 请注意,git 2.7(2015 年 11 月)将允许您添加名为“:”的文件夹!请参阅 commit 29abb33(10 月 25 日) 2015)由Junio C Hamano (gitster)。

请注意,starting git 2.0 (Q1 or Q2 2014) 在谈到 git add .(工作树中的当前路径)时,您也必须在其他 git add 命令中使用“.”。

这意味着:

“混帐添加-A。”相当于“git add .; git add -u 。”

(注意 git add -A 和 git add -u 的额外“.”)

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

这些命令将在 Git 2.0 中的整个树上运行,以与“git commit -a”和其他命令保持一致。因为没有机制使“git add -u”表现得像“git add -u。”,所以对于那些习惯于“git add -u”(没有pathspec)的人来说,只为路径更新索引很重要在当前子目录中开始训练他们的手指明确地说“git add -u”。当他们的意思是在 Git 2.0 到来之前。当这些命令在没有路径规范的情况下运行并且当您在当前目录之外进行本地更改时会发出警告,因为在这种情况下 Git 2.0 中的行为将与今天的版本不同。

@NickVolynkin 太好了!很高兴看到 SO 的国际社区按预期工作。供参考:ru.stackoverflow.com/a/431840

@VonC,很好,Git 人实际上厚着脸皮说他们的更新将“使事情更加一致”。他们的所作所为造成了更多的混乱和不一致。有 26 个字母,他们不得不重新使用已经使用过的标志。

答4:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

从 Charles’ instructions 开始,经过测试,我提出的理解如下:

# For the next commit
$ git add .   # Add only files created/modified to the index and not those deleted
$ git add -u  # Add only files deleted/modified to the index and not those created
$ git add -A  # Do both operations at once, add to all files to the index

这篇博文也可能有助于了解在什么情况下可以应用这些命令:Removing Deleted Files from your Git Working Directory。

这在 2.0 中不再适用。添加 。等于为同一路径添加-A,唯一的区别是树的其他路径中是否有新文件

答5:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

Things changed 与 Git 2.0 (2014-05-28):

-A 现在是默认值

旧行为现在可通过 --ignore-removal 获得。

git add -u 和 git add -A 在没有命令行路径的子目录中对整个树进行操作。

所以对于 Git 2,答案是:

混帐添加。和 git add -A 。在当前目录中添加新的/修改的/删除的文件

混帐添加 --ignore-removal 。在当前目录中添加新的/修改的文件

混帐添加 -u 。在当前目录中添加修改/删除的文件

如果没有点,则添加项目中的所有文件,而不考虑当前目录。

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

我不认为这是正确的。使用 git v2.10.windows.2 'git add' 返回“未指定,未添加任何内容”。 'git add -A' 添加所有更改的文件。这表明“-A”不是默认值。

最后一点“不加点,添加项目中的所有文件,不管当前目录。”不起作用。当我说 {code}git add{code} (不带 .)时,对于带有提示的消息,指定我是否想说 {code}git add 。 {代码}

答6:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

在 Git 2.x 中:

如果您直接位于工作目录,那么 git add -A 和 git add 。工作没有区别。

如果您在工作目录的任何子目录中, git add -A 将添加整个工作目录中的所有文件,然后 git add 。将从当前目录添加文件。

就这样。

答7:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

一个更精炼的快速答案:

两者都在下面(与 git add --all 相同)

git add -A

暂存新文件 + 修改文件

git add .

阶段修改+删除文件

git add -u

您好,如果您只想暂存修改过的文件怎么办?你会怎么做?

你好,好问题。据我所知,这没有一个简单的标志.. git diff-files -z --diff-filter=M --name-only | xargs -0 git add from -> stackoverflow.com/questions/14368093/…

实际上是 git add :/ + git add -u :/

答8:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

git add . 和 git add -A 都将在较新版本的 Git 中暂存所有新的、修改的和删除的文件。

不同之处在于 git add -A 将文件暂存到属于您的工作 Git 存储库的“更高、当前和子目录”中。但是执行 git add . 只会暂存当前目录和其后的子目录中的文件(不是位于外部的文件,即更高的目录)。

这是一个例子:

/my-repo
  .git/
  subfolder/
    nested-file.txt
  rootfile.txt

如果您当前的工作目录是 /my-repo,并且您先执行 rm rootfile.txt,然后执行 cd subfolder,然后执行 git add .,那么它将不暂存已删除的文件。但是无论您从哪里执行命令,执行 git add -A 肯定会进行此更改。

答9:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

git add . 等于 git add -A . 仅从当前文件夹和子文件夹将文件添加到索引。

git add -A 将文件从工作树中的所有文件夹添加到索引。

PS:信息与Git 2.0有关(2014-05-28)。

答10:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

我希望这可以增加一些清晰度。

!The syntax is
git add  
! Aka
git add (nil/-u/-A) (nil/./pathspec)

限制器可以是 -u 或 -A 或 nil。

Pathspec 可以是文件路径或点,'.'表示当前目录。

关于 Git 如何“添加”的重要背景知识:

Git 永远不会自动识别那些以点为前缀的不可见文件(dotfiles)。它们甚至从未被列为“未跟踪”。

Git 从不添加空文件夹。它们甚至从未被列为“未跟踪”。 (一种解决方法是在跟踪文件中添加一个可能不可见的空白文件。)

Git状态不会显示子文件夹信息,即未跟踪的文件,除非该子文件夹中至少有一个文件被跟踪。在此之前,Git 将整个文件夹视为超出范围,即“空”。它没有被跟踪的项目。

指定文件规范 = ‘.’ (点)或当前目录不是递归的,除非还指定了 -A。点严格指当前目录 - 它省略了在上面和下面找到的路径。

现在,鉴于这些知识,我们可以应用上面的答案。

限制器如下。

-u = --update = 跟踪文件的子集 => 添加 = 否;改变 = 是;删除 = 是。 => 如果项目被跟踪。

-A = --all(没有这样的-a,它给出语法错误)=所有未跟踪/跟踪文件的超集,除非在 2.0 之前的 Git 中,其中如果给出了点文件规范,则仅考虑该特定文件夹。 => 如果项目被识别, git add -A 会找到它并添加它。

路径规范如下。

在 Git 2.0 之前的版本中,对于两个限制器(update 和 all),新的默认是对整个工作树进行操作,而不是当前路径(Git 1.9 或更早版本),

但是在 v2.0 中,可以将操作限制在当前路径:只需添加显式点后缀即可(这在 Git 1.9 或更早版本中也有效);

git add -A .

git add -u .

总之,我的政策是:

确保要添加的任何块/文件都在 git status 中进行说明。如果由于不可见的文件/文件夹而缺少任何项目,请单独添加它们。拥有一个良好的 .gitignore 文件,以便通常只有感兴趣的文件未被跟踪和/或无法识别。从存储库的顶层,“git add -A”添加所有项目。这适用于所有版本的 Git。如果需要,从索引中删除任何所需的项目。如果有大错误,请执行“git reset”以完全清除索引。

答11:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

-A 选项添加、修改和删除索引条目以匹配工作树。

在 Git 2 中,-A 选项现在是默认选项。

添加 . 将更新范围限制为您当前所在的目录时,根据 Git documentation

如果在使用 -A 选项时没有给出 ,则整个工作树中的所有文件都会被更新(旧版本的 Git 用于限制对当前目录及其子目录的更新)。

我要补充的一件事是,如果使用 --interactive 或 -p 模式,则 git add 的行为就像使用了更新 (-u) 标志而不添加新文件一样。

原文链接:https://www.huntsbot.com/qa/Pdeb/difference-between-git-add-a-and-git-add?lang=zh_CN&from=csdn

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kalman2019/article/details/128380137

智能推荐

为什么 unity 中正方体网格的顶点数量为 24?_unity 立方体为什么有24个顶点-程序员宅基地

文章浏览阅读2.1k次,点赞5次,收藏5次。unity 中正方体网格的顶点数量为 24, 面片为 12:1.首先看下在 3Dmax 中的顶点数量为 8,面片(四角面片)为 6(图中显示三角形数量是为了方便我们计算):2.模型导入unity 之后,会对四边形(或多边形)进行处理,转成三角面片。因此,对于上述栗子来说,面数 = 原面数 * 2 = 12;3.unity 中显示的顶点数和面片数是实际传递给 GPU 的数量。由..._unity 立方体为什么有24个顶点

java swing 外观框架_【GUI】一、Swing外观框架BeautyEye使用-程序员宅基地

文章浏览阅读635次。一、Swing外观框架BeautyEye使用1.1 导包1.2 使用BeautyEye L&Fpublic static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {// 国人牛逼主题,值得学习// 初始化字体InitGlobalFont(new Font("微软雅黑..._java swing漂亮界面框架

如何实现WebView和js页面的交互_document.getelementsbytagname('html')[0].innerhtml-程序员宅基地

文章浏览阅读6.9k次。WebView默认是不支持js的,要支持js,必须要添加如下设置: WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true);1.如何实现js页面通过WebView调用Android app写好的代码呢?通过webView.addJavascriptInterface(O_document.getelementsbytagname('html')[0].innerhtml)

容灾数据复制技术的比较_caxp-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏6次。容灾数据复制技术的比较 一、概述近几年来,容灾已经成为信息数据中心建设的热门课题。很多容灾技术也快速发展起来,对用户来说也有很广阔的选择余地。但由于容灾方案的技术复杂性和多样性,一般用户很难搞清其中的优劣以确定如何选择最适合自己状况的容灾解决方案。本文我们就容灾建设中的备份及复制技术做一个初步探讨,希望能对客户的数据中心容灾建设提供一些参考。目前有很多种容灾技术,分类也比较复杂_caxp

【js】JavaScript手动回收垃圾_js手动触发gc-程序员宅基地

文章浏览阅读1.5w次,点赞2次,收藏5次。如何手动触发 JavaScript 垃圾回收行为?垃圾回收,即 garbage collect,简称 “GC”。这里的 “手动” 指有效地、显式地、可控地触发浏览器 JavaScript 引擎的垃圾回收行为,比如通过点击页面中的按钮来调用 JS 方法,或使用浏览器提供的功能。IEIE 实际上提供了一个未公开的 JS 方法 CollectGarbage()。至少在 I_js手动触发gc

密码明文存入 log?Twitter 程序员可能要被祭天了-程序员宅基地

文章浏览阅读182次。(点击上方蓝字,快速关注我们)转自:腾讯科技据外媒报道,在发现内部计算机系统存在安全漏洞,会把部分用户的密码存储在空白文本中后,微型博客Twitter周四敦促全球超过3...._general_log明文存储密码

随便推点

用JavaScript中的计时事件制做一个时钟_用js写一个时间-程序员宅基地

文章浏览阅读948次。1:首先创建一个div盒子用来显示时钟,然后给它设置一些简单的样式:2:然后来写js:首先封装一个方法,随便命个名,比如:startTime(),然后在方法中写代码:获取当前时间,也就是new Date(),然后获取当前时间的小时,分钟,毫秒,因为获取到的小时,分钟,毫秒都是数字,并不会在前面自动补0,比如8分,那显示的就是8分,并不会跟我们看到的时钟一样是08分,所以要再封装一个方法,这个..._用js写一个时间

使用curl测试websocket服务是否能正常连入_curl websocket-程序员宅基地

文章浏览阅读2.7w次。部分场景,需要从后台验证websocket服务是否能连入,判断防火墙是否开通,反向代理是否配置正确参考https://gist.github.com/htp/fbce19069187ec1cc486b594104f01d0 curl --include \ --no-buffer \ --header "Connection: Upgrade_curl websocket

发烧友实测 | 用飞凌OKA40i-C开发板玩转FFmpeg_oka40i调用qcamera-程序员宅基地

文章浏览阅读483次。FFmpeg可以支持实时视频流的发送和接收,从而可以把OKA40i-C开发板上的视频实时发送到PC上,由PC上的软件实时接收并显示。我们使用了两种型号的USB摄像头,按照手册说明使用内置的uvccamera程序进行测试,不过都没有成功,得到的错误信息如下图所示。飞凌嵌入式OKA40i-C开发板可以对于1080P的视频压缩达到45fps,所以对USB摄像头的视频压缩应该没有什么压力。前面演示了将MP4文件转换为视频流,我们也可以将USB摄像头采集的内容实时转发到PC上,使用下面的命令行即可。_oka40i调用qcamera

php开发微信公众账号开发包开发教程五之请求响应处理-程序员宅基地

文章浏览阅读152次。第三篇文章已经讲解了如何封装请求信息,现在将介绍如何使用请求消息。首先我们针对接收到的每种消息定义自己的请求消息处理器,先定义基类处理器:[code="php"]/** * 消息处理基类 * @author Administrator * */ abstract class AbstractMessageProcessor { public $requestM..._php公众号用户授权撤回响应代码

前馈神经网络权值更新案例_前馈神经网络计算例题-程序员宅基地

文章浏览阅读6.6k次,点赞13次,收藏39次。本章的主要目的是在于用tensorflow实现一个简单的神经网络算法。 下图是一个简单的前馈神经网络图,改图中有3层结构,第一层为输入层,第二层为隐藏层,第三层则为输出层,图中的W1,……,W9为连接边的权值。下图展示如何进行神经网络的前向传播计算。1.前向传播计算的手动计算及矩阵表示以及Tensorflow计算代码(1)计算输入层-->隐藏层的权重a11 = W1 * X1 ..._前馈神经网络计算例题

vue + cesium 环境搭建_在vue2.5.2中配置cesium的方法-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏4次。版本:vue v2.5.2cesium v1.68.0开发工具使用vscodenode、vue-cli等安装步骤网上都说烂了,这里就不说了。下载webpack模板项目,安装cesium依赖在自己喜欢的位置创建测试文件夹,这里我用的cesiumDemo,拖入vscode中,右键“在终端中打开”。在终端中输入就能下载适合新手开发的vue项目了test是项目..._在vue2.5.2中配置cesium的方法