问题描述
在公司功能写到一半,强迫症不想有一个垃圾提交,比如 git commit -m '写到一半回家写'
这种。
尝试过的方法:
开始用 git stash
命令,可是只能把代码暂存到本地,无法回到家拉取写到一半的代码。
请问有没有什么方法,能回到家继续开发写到一半的功能,又不会有垃圾提交。
在公司功能写到一半,强迫症不想有一个垃圾提交,比如 git commit -m '写到一半回家写'
这种。
尝试过的方法:
开始用 git stash
命令,可是只能把代码暂存到本地,无法回到家拉取写到一半的代码。
请问有没有什么方法,能回到家继续开发写到一半的功能,又不会有垃圾提交。
回家开发
我的方案:
在公司:
git commit -a -m 'tmp' # 只是做非交互演示,实际使用个人并不建议加-m
git push
回家:
git pull
# 噼里啪啦一顿骚操作码代码
git commit -a --amend -m '看哥风骚的完整代码' # 同样,实际使用不建议加-m,在交互式界面看清楚确认递交
git push -f
如果中间的垃圾递交太多了,想一次合并。那么就不用用--amend
了,这个参数相当于reset HEAD^ + commit
你可以先用git log
看看要回滚到哪次递交,然后git reset a1b2c3
, git add -A
, git commit -m '风骚的代码'
, git push -f
。
特别注意: 由于你在家已经使用git push -f
强行覆盖远程仓库,会导致你在公司的git仓库的分支树不同,因此你在公司用git pull
会提示代码冲突,所以你需要用git fetch
,git reset --hard origin/master
强行同步本地仓库。分支名自己根据自己本地的实际情况改。
2 回答1.4k 阅读✓ 已解决
1 回答1.3k 阅读
1 回答868 阅读
1 回答787 阅读
850 阅读
git commit
。开发完成后,git rebase -i [commitID]
, 合并垃圾commit们,这样就不会有垃圾提交了;git commit
。开发完成后,git reset --mixed [commitID]
, 会回滚你的commit, 但是你的工作区代码不会变,你可以重新git add [你需要的文件]
并且git commit
,重新组织你的commit,这样就不会有垃圾提交了;git commit
。在公司时,git diff > [补丁文件]
,发到微信上,回到家,git apply [补丁文件]
,继续开发,开发完成;重复一开始步骤,生成补丁文件,发到微信上,到公司时,下载下来,继续git apply [补丁文件]