【问题标题】:GIT Ignore already commited files using exclude for local changes [duplicate]GIT使用排除本地更改忽略已提交的文件[重复]
【发布时间】:2023-03-19 23:51:01
【问题描述】:

我克隆了包含三个文件的远程存储库

file1.txt 
file2.txt
file3.txt

在我的机器中本地对file3.txt 进行更改。我不希望更改进入远程仓库,反之亦然。

我读到使用 .gitignore 不可能忽略已经提交和跟踪的文件。

我决定使用带有以下行的 .git/info/exclude 文件

排除文件

file3.txt

但在 file3.txt 中所做的更改仍显示为未暂存文件。我希望这个 file3.txt 在提交和暂存时被忽略,并且还需要防止 file3.txt 从远程仓库更新

提前感谢您的帮助

【问题讨论】:

  • .git/info/exclude.gitignore 文件的工作方式相同,只是前者不需要位于工作目录中。

标签: git


【解决方案1】:

我读到使用 .gitignore 不可能忽略已经提交和跟踪的文件。

使用.gitignore.git/info/exclude

你只需要先记录那个文件的删除。

git rm --cached file3.txt

一旦它被删除(仅从缓存中,而不是从硬盘驱动器中),git status 不应该显示它(因为它已经在 .gitignore 中)

参见“git rm --cached x” vs “git reset head — x”?”:“缓存”,也称为“索引”或“暂存区”,仅从索引中删除文件并将其保存在工作副本中。

file3.txt 将不再在 repo 中进行版本控制。
一旦该删除被提交并推送,这将传播到其他克隆。


如果你只需要ignore the file locally一会儿,你可以试试:

git update-index --assume-unchanged -- file3.txt

注意:这根本不涉及.gitignore

停止本地忽略更改:

git update-index --no-assume-unchanged -- file3.txt

【讨论】:

  • @MohamedHussain 是的,一旦您提交并推送删除 file3.txt,它将影响其他 repos
  • @MohamedHussain 我刚刚编辑了答案以指明另一种方法。
  • @MohamedHussain 一次就足够了,除非你重置(见stackoverflow.com/a/8047030/6309)或者你检查另一个分支(见stackoverflow.com/a/9816844/6309
  • @MohamedHussain 要以这种方式忽略文件夹,请尝试git update-index --no-assume-unchanged -- afolder/(注意最后的'/')。如果它不起作用,那么您将不得不对文件夹中的所有文件执行此操作:stackoverflow.com/a/12288918/6309
  • @MohamedHussain 双连字符 (--) 只是在这里将命令和选项与参数(文件或文件夹)分开:参见 stackoverflow.com/a/1192194/6309
【解决方案2】:

编辑 .gitignore 文件,添加以下行: 文件3.txt

【讨论】:

  • .gitignore 文件本身被跟踪,我不想在 .gitigore 中包含 file3.txt,如果我在 .gitignore 中添加,我只在 file3.txt 中对我的本地进行了更改其他队友克隆的也排除了这个文件。我不希望它发生,而且我在网上读到不可能使用 .gitignore 忽略跟踪的文件
猜你喜欢
  • 1970-01-01
  • 2011-10-27
  • 2015-12-30
  • 1970-01-01
  • 2014-02-12
  • 2021-03-24
  • 2010-11-11
  • 2014-05-19
  • 2017-11-18
相关资源
最近更新 更多