繁体   English   中英

Git在提交之前存储特定文件

[英]Git Stashing specific files before a commit

我不确定我正在寻找的是一个git-stash但这就是我想要做的。

我有自定义供本地使用的配置文件。 那些文件已经存在于Git中。 现在,如果我添加一个新功能(更改其他文件),我想隐藏我的配置并点击提交,只提交与我的新功能相关的文件。

如果我使用git-stash,它会隐藏一切。 如何存储我的配置文件(仅限)?

谢谢

两件事情。

  1. 您应该只为您提交要提交的文件。 这是使用git add完成的。 即使你有大量的更改,你也可以只使用git add -p来提交你想要提交的字段(以及使用git add -p的文件)。 你应该这样做。

  2. 除非您的配置文件是应用程序不可或缺的一部分(并且您希望对其进行版本控制),否则您应该ignore它,甚至不应该控制它。

使用git add -p并仅选择要提交的更改。 无论如何,这是一种很好的做法,因为它可以作为一个小代码审查。

stash旨在将未提交到任何分支的所有本地更改保存到临时未命名的分支中。 从本质上讲,它的内部结构与分支的内部结构相同。

您可能甚至不应该检查配置文件,如果这样做,您应该将它放在仅在本地系统上合并的分支中。

这已经很晚了,但我找到了一个更好的解决方案(几年前)。

使用git-assume-status和git-unassume-status

#!/usr/bin/env ruby

# used to ignore modified files -- e.g configuration files

ret=%x{git status --porcelain}
files=ret.lines.map { |x| x.split[1] }

files.each do |file|
  # makes files resistant to git reset hard
  %x{git update-index --skip-worktree #{file}}
  %x{git update-index --assume-unchanged #{file}}
end

而对于git-unassume

#!/usr/bin/env bash

# used to ignore modified files -- e.g configuration files

cd .git
rm index
cd ..
git reset

这样,您可以修改配置文件,但会被状态和其他git add命令忽略。 如果你改变了主意,就运行git-unassume

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM