【问题标题】:Git update local ignoring few files (is not .gitignore)Git更新本地忽略几个文件(不是.gitignore)
【发布时间】:2016-12-23 22:19:19
【问题描述】:
Scenario:
 Bitbucket:
  file1 
  file2 
  file3  

 Local:
  file1 - person1 is working on it
  file2 - person2 is working on it
  file3 - common with personal hardcoded configuration
  untracked files

person1 提交并将他的更改推送到 file1。 person2 如何在不重置 file2、file3 和未跟踪文件的情况下更新本地的 file1? 我尝试了一段时间,但我仍然没有找到简单的方法! 谢谢。

【问题讨论】:

  • 当您将新的更改推送到服务器时,只推送文件 1 而不是整个文件。你是如何将文件推送到 git 的?

标签: git git-pull git-reset git-fetch


【解决方案1】:

当您从远程存储库获取新提交时,未跟踪的文件不会被更新。至于file2file3(我假设 跟踪),您需要在它们上设置skip-worktree 标志。这样 Git 就不会在你的工作目录中更新它们。

来自documentation

--[no-]skip-worktree
当指定这些标志之一时,为 路径未更新。

更多specifically:

读取一个条目时,如果它被标记为skip-worktree,那么Git 假装它的工作目录版本是最新的并阅读 而是索引版本。

您可以使用git-update-index 命令在特定文件上设置skip-worktree 标志:

git update-index --skip-worktree path/to/file2

如果您稍后想取消设置标志,请改用--no-skip-worktree 选项:

git update-index --no-skip-worktree path/to/file2

【讨论】:

  • 谢谢,我发现这个有用的命令可以列出所有跳过的文件 "git ls-files -v . | grep ^S"。
  • 另外一个,那之后你用什么?获取并重置?
  • 愚蠢的问题,也许是“个人问题”。我的意思是在您通常的工作流程中更新您的本地信息。
  • 没问题 :) 您可以使用 git pull 更新您的本地存储库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 2012-07-12
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多