gitpush提交某⼀个commit
  (以下情况是我们的⼀位开发⼩哥哥遇到了提交失败,来我,我给他解决的过程,以前我也没遇到,所以记录下来)
  我们会遇到这样的情况,在develop分⽀上,第⼀天修改的⽂件,已经执⾏了git commit 添加了提交记录信息commit1,忘记push了,然后第⼆天,执⾏了git pull,拉取了服务器的⼀⼤堆提交下来,⽐如有commit2,commit3,commit4之类的,第⼀天的提交commit1已经被冲到前⾯去了,但是现在我本地也有⼀些其他改动,我⼜想提交之前的commit1,只提交这个,我要怎么办呢?
注意,此时本地的提交已经变成下⾯这样了:
merge_new
如何搭建git服务器commit4
commit3
commit2
commit1
commit0
  其中的“merge_new”是你执⾏git pull时,拉取下来的服务器代码和本地代码的⼀个合并记录,如果你想直接push的话,这条记录也会跟着推上去,所以平时都建议⼤家,修改代码之前先pull拉取服务器的新代码下来,然后开始修改,提交之前就不要在拉取新代码了,就是为了防⽌这条记录的产⽣。
  此时,如果我只提交commit1呢,我要怎么提交?
  这⾥说下我尝试了好⼏种错误的⽅式,包含
(1)git diff commit0 commit1 > test.patch ,然后再新的仓库路径下git apply test.patch(开发⼩哥哥直接说patch⾥没有他的提交,不科学啊)
(2)git show commit1 > test.patch , 然后再新的仓库路径下git apply test.patch,显然,这不是patch的正确⽣成⽅式,打patch毫⽆疑问的失败了
(3)git push commit1:develop 这是⽹上的⼀种⽅式,但是还是失败了
正确的步骤如下:
(1)基于⼯作分⽀develop(根据⾃⼰的时间情况修改下)的最新节点创建并切换到新的分⽀test:git checkout -b
test  remotes/origin/develop,操作执⾏后,本地会新建⼀个test分⽀,并且切换到test分⽀,git branch 可以看到当前所在的分⽀
(2) (此时已经在test分⽀上了)cherriy-pick commit1到test分⽀上:git cherry-pick commit1
(3) git log 我们可以看到commit1 已经在test分⽀上了,并且是最后⼀个提交
(4)现在直接push到⼯作分⽀develop就可以了:我们⽤的是gerrit做代码审核的,所以,我们的命令是git push origin
HEAD:refs/for/develop,如果你没有gerrit审核,直接git push 就ok 了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。