Git添加所有修改,删除和未跟踪的文件?
Posted
技术标签:
【中文标题】Git添加所有修改,删除和未跟踪的文件?【英文标题】:Git add all files modified, deleted, and untracked? 【发布时间】:2011-03-30 16:59:46 【问题描述】:有没有一种方法可以添加所有文件,无论您对它们做什么,无论是被删除、未跟踪等吗?就像提交一样。我只是不想每次提交时都必须git add
或git rm
我的所有文件,尤其是在我处理大型产品时。
【问题讨论】:
见:Difference of “git add -A” and “git add .” 【参考方案1】:试试:
git add -A
警告:从 git 2.0(2013 年中)开始,这将始终在整个工作树上暂存文件。 如果要在工作树的当前路径下暂存文件,则需要使用:
git add -A .
另见:Difference of git add -A
and git add .
【讨论】:
这对我不起作用......我如何在这个讨论中显示我的终端输入输出?复制粘贴我的终端输出作为此讨论的答案? 这是我面临的问题 - ***.com/q/7726131/636762 - 请帮我解决这个问题 如果你的 git 版本太旧,这也不起作用。我在运行 git 1.5.2.5 的服务器上运行脚本。 git add -A 不工作。从脚本中,没有报告错误消息。只有从命令行我才发现 -A 不是添加的合法选项。 但是为什么我每次要提交时都必须添加文件!?每次我对文件进行更改时,我都需要添加它.. 这就是 Git 的工作方式。您必须在提交之前将更改添加到暂存区域。例如,您可以只将一些文件添加到提交并为其提供 cmets,而不是一直添加所有文件。这是对它的作用和原因的一个方便的解释:gitready.com/beginner/2009/01/18/the-staging-area.html【参考方案2】:试试
git add -u
“u
”选项代表更新。这将更新存储库并实际从存储库中删除您在本地副本中删除的文件。
git add -u [filename]
仅对一个文件进行删除。推送后,该文件将不再在 repo 中。
或者,
git add -A .
等价于
git add .
git add -u .
注意多余的“.”在git add -A
和git add -u
警告:从 git 2.0(2013 年中)开始,这将始终在整个工作树上暂存文件。 如果要在工作树的当前路径下暂存文件,则需要使用:
git add -A .
另见:Difference of git add -A
and git add .
【讨论】:
【参考方案3】:以下答案仅适用于 Git 版本 1.x,但适用于 Git 版本 2.x。
你想要git add -A
:
git add -A
阶段全部;
git add .
阶段新建和修改,未删除;
git add -u
阶段修改删除,没有新增。
【讨论】:
请注意,以上仅适用于 Git 1.x。对于 git 版本 2.x,git add -A
等效于 git add .
。更多讨论请参见here。【参考方案4】:
git add --all
或 git add -A
或 git add -A .
所有阶段
git add .
新的和修改的阶段但没有删除
git add -u
阶段已修改和删除但没有新的
git commit -a
表示git add -u
和git commit -m "message"
编写此命令后,请按照下列步骤操作:-
-
按 i
写下您的信息
按 esc
按 :wq
按回车
git add <list of files>
添加特定文件
git add *.txt
添加当前目录下的所有txt文件
git add docs/*/txt
在docs目录下添加所有txt文件
git add docs/
添加docs目录下的所有文件
git add "*.txt"
或git add '*.txt'
添加整个项目的所有文件
【讨论】:
【参考方案5】:我不确定它是否会添加已删除的文件,但根目录下的git add .
会添加所有未跟踪的文件。
【讨论】:
查看我关于如何添加已删除文件的回答【参考方案6】:这是我的选择(在任何 bash 中):
$ git status -s|awk ' print $2 '|xargs git add
重置
$ git status -s|awk ' print $2 '|xargs git reset HEAD
【讨论】:
【参考方案7】:我编写了 G2 项目,这是一个对命令行 git 爱好者的友好环境。 请从 github 获取项目 - G2 https://github.com/orefalo/g2
它有一堆方便的命令,其中一个正是您正在寻找的:freeze
freeze - 将存储库中的所有文件(添加、删除、修改)冻结到暂存区域,从而暂存该内容以包含在下一次提交中。也接受一个特定的路径作为参数
【讨论】:
【参考方案8】:适用于较新版本的 Git。
我尝试了git add -A
并提示,
警告:'git add --all (or -A)' 的行为没有路径参数 来自树的子目录将在 Git 2.0 中更改,并且不应该 不再使用。要为整个树添加内容,请运行:
git add --all :/ (或 git add -A :/)
要将命令限制在当前目录,请运行:
git 添加 --all 。 (或 git add -A 。)
使用当前的 Git 版本,命令仅限于当前 目录。
然后我尝试了以下 工作。
git add --all :/
【讨论】:
【参考方案9】:我使用以下行添加以暂存所有已修改和新创建的文件,不包括 .gitignore 中列出的文件:
git add $(git ls-files -mo --exclude-standard)
(语法 $() 用于 bash shell)。我猜想命令行选项 -mod 也应该添加已删除的文件...或者,如果您的文件名带有嵌入的空白,则以下单行应该可以解决问题:
git ls-files -z --deleted --modified --others --exclude-standard | xargs -0 git add
【讨论】:
【参考方案10】:来自 Git 文档,从 2.0 版开始:
要为整个树添加内容,请运行:
git add --all :/
或
git add -A :/
要将命令限制在当前目录,请运行:
git add --all .
或
git add -A .
【讨论】:
以上是关于Git添加所有修改,删除和未跟踪的文件?的主要内容,如果未能解决你的问题,请参考以下文章