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