GIT 实战中重要的三个命令 | 8月更文挑战

193 阅读4分钟

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