开发中实用的git命令以及IDEA中的git操作整理

3,296 阅读3分钟

前言

git 作为一个应用性超广的代码托管软件较SVN还是方便多了,自项目组去年10月份从SVN切换到git以来已经在实际开发过程中使用git来进行已经过去一段时间了。相较于之前自己在学校里面只会用git bash用命令行进行git操作,这段时间还是学习总结了一些git命令对应的IDEA中git图形界面的操作,感觉还是挺方便的。下面就介绍一些个人整理总结的操作。

一、分支管理

1. 分支切换

git bash:

git checkout branchName

IDEA操作:

2. 新建分支

2.1 从branchName-1分支新建出一个branchName-2本地分支

git bash:

git checkout branchName-1
git checkout –b branchName-2

IDEA操作:

2.2 从远程branchName分支关联一个本地新建branchName分支

git bash:

git pull
git checkout branchName

IDEA操作:

3 分支删除

删除本地分支: git bash:

git branch –d branchName

IDEA操作:

删除远程分支:

git bash:

// 删除远程分支在本地的记录
git branch -r -d origin/ branchName
// 注意这里origin和冒号之间有一个空格,表示推送本地的一个空分支(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支及删除远程分支
git push origin : branchName

4 分支merge,branchName-1 merge到 branchName-2

git bash:

git checkout branchName-1
git merge branchName-2

IDEA操作: 切换到branchName-1分支

二、代码回退

1. 回退工作区代码

git bash:

git checkout givenFile

IDEA 操作:

回退单个文件

回退代码段

2. 本地分支回退到历史版本

git bash:

git log  // 查看要回退到的历史版本的Commit ID
git reset –hard Commit ID

IDEA操作:

3. 远程分支回退到历史版本

git bash:

git log  // 查看要回退到的历史版本的Commit ID
git reset –hard Commit ID  // 回退本地分支
git push -f origin branchName  // 强制推送到远程分支

三、stash(缓存)功能

git stash用于保存当前工作进度。比较常用的场景就是在开发分支开发特性的时候紧急修复release分支的严重bug。这个时候便可以用使用 git stash将当前修改(未提交的代码)存入缓存区,切换分支修改 bug, 回来后再通过git stash pop将之前缓存的修改取出来。

git bash:

git stash 
git stash save “message...”  // 功能同上可以添加一些备注
git stash show  // 查看缓存的修改
git stash list  // 查看缓存区中所有缓存记录
git stash pop  // 取出缓存区栈顶的记录

IDEA操作:

四、提交查看(bug追踪)功能

IDEA -> Version Control -> Log,可以指定所要查看的分支,提交人,时间,文件或文件夹。

1. 查看某个文件的提交记录

git bash:

git log workSpace/src/main/java/javaop/BaseOpTest.java

IDEA操作: 右击代码文件空白处

2. 查看某一行代码的修改历史

git bash:

// -L s,e 表示第s行第e行
git blame -L 1,1000 workSpace/src/main/java/javaop/BaseOpTest.java

IDEA 操作: 右击代码文件空白处

五、将多次commit合并为一个

如图,有多次同一个bug的多次bugfix commit,我想把它们合并成一个commit。

  1. 打开IDEA的log history

  2. 右键如图提交记录3(需要进行合并的上一个提交),菜单Copy Revision Number复制commit ID

  3. 菜单VCS->Git->Rebase,勾上Interactive,Onto粘贴第2步中复制的commit

  1. 点击Rebase并在交互式rebase菜单中,将第一个选为pick,后面的都选为squash,点Start Rebasing

  1. 在Additional Rebase Input中编辑下合并以后的commit message,并点击Resume Rebasing

  1. 搞定,完成commits合并了

各位看官,觉得总结的有点用的,点个赞呗~

参考文献

  1. www.zhihu.com/question/56…
  2. blog.csdn.net/qq_32452623…