如何管理我不想推送git的更改?

时间:2016-01-28 19:27:58

标签: git

有时我需要对我想要推送的本地树进行更改。这些可能只是对运行测试的脚本的攻击。虽然我在本地树中进行了此更改,但我可能会进行其他实际更改。

问题:

  • 如果我没有犯下黑客,那么我必须小心使用commit -a
  • 如果我不提交黑客攻击,那么很难看出我是否做了更改我想要提交同一个文件。
  • 如果我确实犯了黑客,那么我必须小心不要推它。

现在,我提交黑客的提交说明,提醒我不要推它们。然后当我工作并积累真正的变化时,我将黑客重新加入到我的分支的HEAD中。

有没有更好的方法来管理这样的变化?

3 个答案:

答案 0 :(得分:2)

git中没有这样的可能性来忽略文件中的某些更改,但会跟踪其他更改。 通常,应通过配置应用程序来解决此类问题。我的意思是,如果你有黑客,他们不应该像那样硬编码(不知道你使用什么语言,所以它是一些伪代码):

someMethod() {
   doWork();
   dirtyHack();
   doSomeOtherWork();
}

您最好有一个配置文件来描述是否应该在当前配置中执行黑客攻击。所以代码可能会像这样修改:

someMethod() {
   doWork();
   if (readConfig().isDirtyHacksEnabled()) {
       dirtyHack();
   }
   doSomeOtherWork();
}

此方法允许您在计算机和远程服务器上(或任何您想要的位置)拥有不同的配置文件。 并且应该使用以下命令在git中忽略此特定配置文件:

git update-index --skip-worktree <path_to_file>

因此,您可以跟踪git中的脚本文件更改,而只能在您的计算机上启用hacks。 不要将--skip-worktree--assume-unchanged混淆。 当您设置最新标志时,您承诺git不会进行任何更改,因此git可以跳过检查文件的索引并节省一些时间,如果文件很大或文件系统很慢。

答案 1 :(得分:1)

使用--assume-unchanged标记要暂时(暂时)忽略提交的文件:

git update-index --assume-unchanged <file>

然后您可以取消标记:

git update-index --no-assume-unchanged <file>

答案 2 :(得分:0)

使用:git stash存储它们 然后,您可以进行真正的更改,提交并在以后解除黑客更改(如果您需要)