Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何只提交一些新文件而忽略修改的文件?_Git_Github - Fatal编程技术网

Git 如何只提交一些新文件而忽略修改的文件?

Git 如何只提交一些新文件而忽略修改的文件?,git,github,Git,Github,使用git我只想将一些新添加的文件提交到repo中,而忽略一些修改过的文件(被病毒感染) 我该怎么做 我想将这些文件保存在repo中,我只是不想提交损坏的文件 我试过了 git添加我的新文件 我也能做到 git-rm\u已更新\u文件\u未\u添加\u 但是这些文件将从repo中删除,我想保留旧版本 也许我可以添加我想添加的文件并保存其余的文件?要将你想添加的文件添加到远程,请按照你所说的使用命令 git添加我的新文件 在提交和推送之后,这应该是您所要做的全部 如果您最终在提交中添加了错误的文件

使用
git
我只想将一些新添加的文件提交到repo中,而忽略一些修改过的文件(被病毒感染)

我该怎么做

我想将这些文件保存在repo中,我只是不想提交损坏的文件

我试过了

git添加我的新文件

我也能做到

git-rm\u已更新\u文件\u未\u添加\u

但是这些文件将从repo中删除,我想保留旧版本


也许我可以添加我想添加的文件并保存其余的文件?

要将你想添加的文件添加到远程,请按照你所说的使用命令

git添加我的新文件

在提交和推送之后,这应该是您所要做的全部

如果您最终在提交中添加了错误的文件,例如
\u updated\u files\u not\u to\u add\u
,则可以在使用以下命令按下之前将其从提交中删除:


git reset\u updated\u files\u not\u to\u add\u

要将要添加的文件添加到远程,请按您所说的使用命令

git添加我的新文件

在提交和推送之后,这应该是您所要做的全部

如果您最终在提交中添加了错误的文件,例如
\u updated\u files\u not\u to\u add\u
,则可以在使用以下命令按下之前将其从提交中删除:


git reset\u updated\u files\u not\u to\u add

我在命令行上执行大多数git操作,但我发现使用标准gui进行文件暂存和提交要容易得多

在linux、osx或git bash中,键入
git gui&
。如果它没有出现,您需要安装它。如果您使用的是mac,我认为git的
brew
版本附带gui,但github版本没有。(不确定)

这使您可以可视化哪些文件被暂存,甚至可以非常轻松地暂存文件行


您甚至可以在gui中暂存文件,然后在命令行上键入
git status
,查看文件是否已暂存。

我在命令行上执行大多数git操作,但我发现使用标准gui暂存文件和提交要容易得多

在linux、osx或git bash中,键入
git gui&
。如果它没有出现,您需要安装它。如果您使用的是mac,我认为git的
brew
版本附带gui,但github版本没有。(不确定)

这使您可以可视化哪些文件被暂存,甚至可以非常轻松地暂存文件行

您甚至可以在gui中暂存一个文件,然后在命令行上键入
git status
,查看该文件是否已暂存。

要添加一点,请注意
git commit
从git的索引而不是从工作树获取提交内容。(索引也称为暂存区,有时也称为缓存。)当运行
git add file
时,git会将给定
文件的内容从工作树复制到索引中

如果某些工作树文件已损坏,但索引版本完好无损,则可以简单地避免在工作树文件上运行
git add
。索引版本保持不变,
git commit
将使用它们

如果索引版本也已损坏,但
HEAD
版本完好无损,您可以指示Git使用
Git reset
HEAD
版本复制到索引中,如Ron所示:
Git reset file

将索引视为位于当前(
HEAD
)提交和工作树之间,因为它确实:

HEAD commit      index        work-tree
-----------    ---------      ---------
README.md      README.md      README.md
file.ext       file.ext       file.ext
从工作树复制到索引的操作是
git add
,从commit复制到索引的操作是
git reset

(根据定义,任何提交的文件都是只读的,因此没有从索引复制到提交的操作。当然,您可以使用
git commit
将索引转换为提交来进行新的提交,它将成为您的
HEAD
commit。)

还可以使用命令的
git checkout commit--file
格式中的
git checkout
从任何提交复制到工作树。但是,请注意,当您执行此操作时,
git checkout
首先将文件从给定提交复制到索引,然后从索引复制到工作树,因此这种复制将同时替换索引和工作树版本。

要补充一点,请注意
git commit
从git的索引获取提交内容,不是从工作树上。(索引也称为暂存区,有时也称为缓存。)当运行
git add file
时,git会将给定
文件的内容从工作树复制到索引中

如果某些工作树文件已损坏,但索引版本完好无损,则可以简单地避免在工作树文件上运行
git add
。索引版本保持不变,
git commit
将使用它们

如果索引版本也已损坏,但
HEAD
版本完好无损,您可以指示Git使用
Git reset
HEAD
版本复制到索引中,如Ron所示:
Git reset file

将索引视为位于当前(
HEAD
)提交和工作树之间,因为它确实:

HEAD commit      index        work-tree
-----------    ---------      ---------
README.md      README.md      README.md
file.ext       file.ext       file.ext
从工作树复制到索引的操作是
git add
,从commit复制到索引的操作是
git reset

(根据定义,任何提交的文件都是只读的,因此没有从索引复制到提交的操作。当然,您可以使用
git commit
将索引转换为提交来进行新的提交,它将成为您的
HEAD
commit。)

还可以使用
git checkout commit--file中的
git checkout
从任何提交复制到工作树