研发效能实用贴士 - Git篇
Git 是我们日常开发中常用的代码版本管理工具, 在日常的开发中我们习惯了先Add,再commit然后再push到远程仓库的操作。
其实这些操作也是最基础的操作,下文会根据日常开发中的常见场景介绍Git的其他操作。
保持Git提交原子性的基本操作
用工作区改动的一部分产生提交
command line:
git add -p <file-name>
进入git add patch 模式之后,命令行会将文件中处于woring directory的修改拆分成多个逻辑代码块,
然后命令行会依次询问这些代码块是否要将这些改变加入到暂存区(staging area), 这里只需选择 y or n即可,当然也可以通过 s 指令把代码块进一步拆分。
添加完成后,可以通过 git diff –cached 命令查看确定添加到暂存区代码。
对当前提交进行拆分
command line:git branch temp
git reset HEAD^
git add -p <file-name>
修改当前提交
command line:
修改 Commit Message
git commit --amend
修改文件内容
git add
、git rm
git commit --amend
交换多个提交的先后顺序
前提: commit在本地还没有push到remote upstream
command line:git branch temp
git rebase -i origin/master
然后在交互命令选择 pick 命令(用法: pick hash-value)交换两个提交,
修改非当前提交
command line:git branch temp
git rebase -i origin/master
然后在交互命令选择 edit 命令(用法: edit hash-value), 然后通过git add
和 git rm
命令对需要修改的文件进行操作,之后运行git commit --amend
进行提交git rebase --continue
完成 git rebase -i
命令的后续操作。
Commit操作的后悔药
尚未add 时撤销修改
git checkout -- file_name
add后尚未 commit 时撤销
git rm --cached
commit 后尚未push 时回退版本
git reset --hard HEAD^