Git - 不要推动一些局部变化

时间:2010-12-30 04:32:11

标签: git

在处理项目的用户界面时,我在本地测试它。因此,我希望能够取消注释HTML头中的一些远程包含,稍微工作,然后在没有取消注释的情况下推送更改,这只是为了更快地在本地进行测试。用git做这个的最好方法是什么?

3 个答案:

答案 0 :(得分:3)

您可以设置一个单独的分支,即master,只是将这些行取消注释,例如,

git checkout -b testing master
# edit foo/bar/baz.html
git commit -a -m "Enable local testing optimizations."

然后单独留下这个分支。你很少需要触摸它。之后你正在做一些你想测试的工作,所以你要检查你的功能......

# hack hack hack
git commit -m "Feature complete."

...然后(暂时)合并您的测试更改。

git merge testing

假设您没有修改标题,这很少会导致任何冲突,并且应该干净地合并。你完成了测试,然后你可以

git reset --hard HEAD^

抛弃合并提交,将您的树留在HEAD指向“功能完成”的位置。提交。

有时,您可以针对testing重新定位master分支,或者重新处理该分支以处理该部分的任何更改。


另一种选择是仅在.patch文件中维护您的更改。然后......

# Feature complete!
# Apply testing code... 
git apply testing.patch
# Test...
git apply -R testing.patch
# Remove testing code

同样的想法,但使用单独的补丁文件处理。稍微简单一点,也许可以减少纪律,但也可能有点风险。


您可能还想编写一个update挂钩(请参阅githooks(5)),以确保您永远不会推送包含此测试补丁的更改。

答案 1 :(得分:0)

不要将文件添加到提交中。添加&仅提交包含您要推送的更改的文件。例如......

Uncomment remote includes in foo.html
edit file1.html
edit file2.html

git add file1.html
git add file2.html
git commit -m "added feature"
git push origin master

不会推送对foo.html所做的更改。


如果您要删除对文件的本地更改,请使用git checkout ...

git checkout path\to\foo.html

答案 2 :(得分:0)

如何使用客户端钩子在结账后自动取消注释并对预提交进行评论?

如果您要更改的评论并非总是相同,则可能不是最佳解决方案。

有关Git钩子的信息,请参阅Section 7.3 of the Pro Git book