1, 工作中重要的是三个命令
(1) git commit
(2) git cherry-pick
(3) git stash
2, git commit 修改某一次的提交注释内容
工作需求,每次提交代码都需要带有卡片ID,卡片ID如果忘记添加,就会推送不上去,那么就会涉及到修改当前最近的一次提交记录,或者是修改之前的某一次提交记录
1, 提交代码,并添加注释内容
git commit -m '本次修改了xxxx功能'
2, 发现上一次,也就是最近一次提交的注释内容有问题,修改注释内容
git commit --amend 回车
1,输入 i ,进入编辑页面
2,修改注释内容
3,按 esc 按键,接着按: shift + :
4,输入 wq ,然后回车退出
3, 发现之前的某一次提交写的注释有问题,修改之前的某一次提交注释内容
修改之前的第二次,第三次,甚至更提前一次的提交注释内容
1, git rebase -i HEAD~3 (注意:想修改第几次就HEAD~几,我这边修改第三次的提交注释内容)
2, 此时展示的是前3次提交的注释文本,前面的单词可以了解简单常用的几个即可
输入i进入编辑页面
(1) 把pick 修改成 edit :意味着,要修改此次提交的注释内容
(2) 把pick 修改成 drop :意味着,将要删除此条提交注释的内容
此时:我把第三个:pick 改成 edit, 然后输入esc, shift + : , wq, 退出保存
3, 然后根据提示,
git commit --amend
(此时需要编辑的就是刚才修改为 edit的地方, 进入编辑页面,然后修改)
4, 最后: git rebase --continue
5, git push origin xxxx
4, 直接重置到某次提交
1, git log 查看要重置到某次提交记录的commitId
2, 复制commitId
3, git reset --hard 粘贴commitId
4, git push -f origin xxxx // 强制推送上去
3, git cherry-pick 完美的提交规范
对于有些团队,git merge 是项目组长禁止使用的命令,因为它会带来很多垃圾提示信息,幸运的是我就遇到过,拿如果想把代码从一个分支转移到另一个分支,而且非常清楚新增了那些功能,只是就可以用 cherry-pick
1, 复制某次提交到当前分支
git checkout master
git cherry-pick xxxxxxxx
当然也可以不是哈希值,如果是分支名称
# 表示把分支branch21.08.04的最近提交的代码,合并成一次提交记录,转移到当前分支上
git cherry-pick branch21.08.04
2,复制多次提交
# 转移两次提交记录
git cherry-pick <hashA> <hashB> <hashC>
# 转移多次连续提交记录(不包含hashA), 且hashA提交要早于hashB,意思是:从下往上
git cherry-pick <hashA>...<hashE>
# 包含hashA
git cherry-pick <hashA>^..<hashB>
3, cherry-pick 合并代码冲突
如果代码冲突,git cherry-pick会停止一下,然后解决冲突,冲突解决完之后,继续cherry-pick
git add .
git cherry-pick --continue
如果代码冲突,不想合并了,回退到操作前的样子
git cherry-pick --abort
4, git stash 暂存本地代码
当你在dev上做开发的时候,这个时候项目出现了一个bug,需要紧急修复,但是你的项目刚开发完一般,还不想提交,这时候,可以用git stash ,命令 将修改的内容保存至堆栈中,然后顺利的切换到hotfix分支进行修复,完成后,再次切换到dev分支,从堆栈中恢复刚刚保存的内柔
由于疏忽,本该在dev上开发的内容,却在master上进行了开发,你需要重新切到dev上开发,可以用 git stash 将内容保存到堆栈中,切回到dev分支后,再次恢复内容即可
1,暂存本地代码
git stash save '保存注释'
执行完上面的命令结果
stash@{0}: On zlm: 0227
stash@{1}: WIP on master: 14b03d3 update
2, 查看本地有多少缓存代码
git stash list
3, 将当前stash 中的内容弹出,并应用到当前分支对应的工作目录上去,会清空此次暂存在堆栈中的内容
git stash pop
4, 将堆栈中的内容应该到当前目录,不同与git stash pop, 该命令不会将内容从堆栈中删除,可用于多个分支,堆栈中没有删除
git stash apply stash@{0}
5, 从堆栈中移除指定的stash
git stash drop stash@{0}
6, 清空本地堆栈中的内容
git stash clear
7, 查看指定的stash和当前的目录差异
git stash show stash@{0}
8, 从最新的stash创建分支
git stash branch21.08.04