Git-避免推动某些局部更改

Git-避免推动某些局部更改,git,Git,在处理项目的用户界面时,我在本地对其进行测试。因此,我希望能够取消对HTML头部中一些远程包含的注释,工作一段时间,然后在不取消注释的情况下推动更改,这只是为了加快本地测试的速度。使用git执行此操作的最佳方法是什么?不要将文件添加到提交中。仅添加并提交包含要推送的更改的文件。例如 Uncomment remote includes in foo.html edit file1.html edit file2.html git add file1.html git add file2.html

在处理项目的用户界面时,我在本地对其进行测试。因此,我希望能够取消对HTML头部中一些远程包含的注释,工作一段时间,然后在不取消注释的情况下推动更改,这只是为了加快本地测试的速度。使用git执行此操作的最佳方法是什么?

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

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

您可以在
主程序
上设置一个单独的分支,只对这些行进行注释,例如

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^
要放弃合并提交,请将树中的
头指向“功能完成”。提交

有时,您可以根据
master
重新设置
测试
分支的基础,或者重新处理它以处理该部分的任何更改


另一种选择是只在
补丁文件中维护更改。然后

# Feature complete!
# Apply testing code... 
git apply testing.patch
# Test...
git apply -R testing.patch
# Remove testing code
相同的想法,但使用单独的补丁文件处理。更简单一点,也许允许少一点纪律,但也可能有一点风险



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

使用客户端钩子来自动取消签出后的注释和提交前的注释怎么样

如果您正在更改的注释并不总是相同的,那么这可能不是最佳解决方案


有关Git挂钩的信息,请参阅。

您可以做的一件事就是永远不要提交更改。始终使用
git add-p
添加更改(至少在该文件中),或者在提交之前取消该行的stage。是否有比这更干净、更可用的解决方案?类似于一个命名的隐藏条目,我可以在每次提交之前删除它,然后在每次提交之后应用它,这将是非常理想的……完美!那正是我要找的!非常感谢你:D