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

时间:2010-12-07 13:51:21

标签: git

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

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

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

由于

4 个答案:

答案 0 :(得分:7)

两件事。

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分: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