提交前使用Git暂存特定文件

4

我不确定我要找的是不是git-stash,但这是我想做的事情。

我有为本地使用定制的配置文件,这些文件已经存在于Git中。 现在,如果我添加了一个新功能(更改其他文件),我希望将我的配置文件存储起来,然后提交只与新功能相关的文件。

如果我使用git-stash,它会把所有的东西都藏起来。 我该如何只暂存我的配置文件呢?

谢谢

4个回答

7

有两件事情。

  1. 你应该只为提交而想要的文件进行暂存。这可以使用 git add 来完成。即使你有很多更改,你也可以使用 git add 只暂存你想要提交的字段(和使用 git add -p 暂存文件片段)。你应该这样做。

  2. 除非你的配置文件是应用程序的重要部分(并且你想对其进行版本控制),否则你应该将其 ignore 并不会进行版本控制。


3

使用git add -p命令,只选择您想提交的更改。这是一个好习惯,因为它起到了一点代码审查的作用。


2

stash 意图将所有未提交的本地更改保存到一个临时未命名的分支中,这个分支的内部实质上与普通分支相同。

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


0
这可能有点晚了,但我找到了一个更好的解决方案(几年前)。
使用 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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接