Git添加所有修改,删除和未跟踪的文件?

Posted

技术标签:

【中文标题】Git添加所有修改,删除和未跟踪的文件?【英文标题】:Git add all files modified, deleted, and untracked? 【发布时间】:2011-03-30 16:59:46 【问题描述】:

有没有一种方法可以添加所有文件,无论您对它们做什么,无论是被删除、未跟踪等吗?就像提交一样。我只是不想每次提交时都必须git addgit 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 -Agit 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 -ugit 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添加所有修改,删除和未跟踪的文件?的主要内容,如果未能解决你的问题,请参考以下文章

在 VSCode 中保存文件会删除 git repo 中的所有跟踪文件

Git管理修改撤销和删除文件

git取消文件跟踪

git取消文件跟踪

git 使用操作

Git上下文中的跟踪文件和未跟踪文件是啥?