gpt4 book ai didi

git - 在 git 中保持未提交本地更改的实用工作流程是什么?

转载 作者:IT王子 更新时间:2023-10-29 01:02:31 27 4
gpt4 key购买 nike

我想做的事情已经在that question中描述过了。 .但我想以一种实用且更通用的方式解决该问题。所以用例如下:

  • 我在多个文件 web.configcreateDb.sql 或任何其他文件中进行了多项本地更改
  • 我不想提交这些文件,因为更改仅针对我的本地机器
  • 这些文件必须是受版本控制的,而且其中一些文件(尤其是 sql 脚本)经常发生更改,所以我想接收这些文件的更新
  • 确实想要提交所有其他文件
  • 我希望能够通过一条命令(使用 posh-git,因此欢迎使用 powershell)毫无摩擦地做到这一点

链接到的解决方案据说使用 git add -p 并且不实用,一直手动选择 block 很无聊或者也许有一个更方便的方法?

例如,以下其中一项可能有效:

  • 如果有能力在将我的工作副本中的文件添加到索引之前对其进行过滤,例如 git -add -A -EXCEPT web.config crateDb.sql。然后我可以将 git 别名映射到它,仅此而已。
  • 是否有取消应用存储的能力。我的意思是从工作副本中删除一个特定存储中包含的更改。所以我必须在每次提交之前执行类似 git stash -deapply 的操作,这也很好。

这个问题很普遍,很奇怪目前没有解决办法。例如。 TortoiseSVN 具有“提交时忽略”功能,Perforce 允许将这种类型的本地更改存储在单独的更改列表中并且从不提交。

最佳答案

您可以在 git 提交之前尝试执行以下操作:

git update-index --assume-unchanged web.config crateDb.sql

来自 git 帮助:

--assume-unchanged

--no-assume-unchanged

When these flags are specified, the object names recorded for thepaths are not updated. Instead, these options set andunset the "assume unchanged" bit for the paths. When the "assumeunchanged" bit is on, git stops checking the working tree files forpossible modifications, so you need to manually unset the bit to tellgit when you change the working tree file. This is sometimes helpfulwhen working with a big project on a filesystem that has very slowlstat(2) system call (e.g. cifs).

This option can be also used as a coarse file-level mechanism toignore uncommitted changes in tracked files (akin to what .gitignoredoes for untracked files). Git will fail (gracefully) in case it needsto modify this file in the index e.g. when merging in a commit; thus,in case the assumed-untracked file is changed upstream, you will needto handle the situation manually.

关于git - 在 git 中保持未提交本地更改的实用工作流程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236112/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com