10

问题描述

在公司功能写到一半,强迫症不想有一个垃圾提交,比如 git commit -m '写到一半回家写' 这种。

尝试过的方法:

开始用 git stash 命令,可是只能把代码暂存到本地,无法回到家拉取写到一半的代码。

请问有没有什么方法,能回到家继续开发写到一半的功能,又不会有垃圾提交。

sesine 57
2018-11-01 提问
11 个回答
7

已采纳
  1. 第一种方式:依旧要用git commit。开发完成后,git rebase -i [commitID], 合并垃圾commit们,这样就不会有垃圾提交了;
  2. 第二种方式:依旧要用git commit。开发完成后, git reset --mixed [commitID], 会回滚你的commit, 但是你的工作区代码不会变,你可以重新git add [你需要的文件] 并且 git commit,重新组织你的commit,这样就不会有垃圾提交了;
  3. 第三种方式:不需要用git commit。在公司时,git diff > [补丁文件],发到微信上,回到家,git apply [补丁文件],继续开发,开发完成;重复一开始步骤,生成补丁文件,发到微信上,到公司时,下载下来,继续git apply [补丁文件]
2

何必这样麻烦,在自己的分支上提交呗,不影响主分支就无所谓啊。

1

sourcetree看看吧 图形化界面操作可能会有

1

提交到临时分支里面,用完就删

1
  1. git stash
  2. git新建分支,如回家开发
  3. git stash pop
  4. git push
  5. 回家
  6. git pull
  7. 开发
  8. commit
  9. 合并分支并push
  10. 收工
0

我的方案:

在公司:

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强行同步本地仓库。分支名自己根据自己本地的实际情况改。
0

试试teamviewer?远程非常流畅,家里移动,公司电信

-1

随便这样提交有什么问题吗... rebase 啊...

0

抱电脑回家,不就ok了!!!

该答案已被忽略,原因:不符合答题规范 - 内容不是答案,可用评论、投票替代

0

回家还工作干嘛

该答案已被忽略,原因:不符合答题规范 - 内容不是答案,可用评论、投票替代

0

把代码拷回家

该答案已被忽略,原因:不符合答题规范 - 内容不是答案,可用评论、投票替代

撰写答案

推广链接