git 实用汇总,很多小技巧,开发中经常遇到,速查手册。
stash
有时候我们一个功能开发了一半,不想 commit 也不想丢掉,这个时候可以用 stash 解决。
1 | # 把修改暂存起来 |
如果有多个 stash,而不想试用最上面的,有如下三种方式:
1 | # 不会删除 stash |
只提交部分文件
1 | # 提交指定文件 |
取消 add
1 | git reset HEAD a.go |
已经修改,未 add, 变成未修改状态
1 | git checkout -- a.go |
取消 commit
已经 commit 了,但是不想要了,想回到上一个 commit 重写
1 | #回到上一个 commit,把这个 commit 的修改变为 unstaged changes |
revert
有时候我们代码已经 push 了,但是不想要了:
1 | # 回到上次代码 |
把其它分支代码更新到当前分支
1 | git pull origin master:master |
submodule
Git 子模块功能允许你将一个Git仓库当作另外一个Git仓库的子目录。这允许你克隆另外一个仓库到你的项目中并且保持你的提交相对独立。
1 | # 添加子模块 |
orphan 使用
当我们需要创建一个全新的分支时,而又不希望继承任何其它分支,可以使用 –orphan 参数, eg:
1 | git checkout --orphan dev |
此时新创建的分支会有原始分支的代码,直接删除即可,然后添加我们新的代码。
查看配置信息
1 | git config --global --list |
设置信息
1 | git config --global user.name "yourname" |
获取最后一次提交信息
1 | # 最后一次所有信息 |
cherry pick使用
有时候他们需要在多个分支上提交相同的代码,如果每一个都改一遍就太麻烦了。
这时候可以使用cherry pick,具体操作如下:
例如你现在 dev分支合入代码,并且已经提交。
git log 查看你提交的commit 号
1
2
3
4
5commit 3e54a734e42bb8f9e2c32c193de741432f544d28
Author: yourname <yourname@test.com>
Date: Fri Apr 29 14:13:16 2016 +0800
614005245543 upgrade librados2* librbd1*git checkout 其它分支
- git cherry-pick 查询到的commit号(例如上面的3e54a734e42bb8f9e2c32c193de741432f544d28)
- 这个时候你用git status 命令查看,切换的分支代码是已经add和commit的,由于不同的分支我们使用的EC单号不同,这个时候我们需要修改commit信息
- 使用git commit –amend 这个时候git会自动调用vi打开你的commit信息,你编辑成新的就可以了。
- 使用git push origin 远程分支名 提交代码
远程分支
1 | # eg: 本地分支名为 dev01, 创建远程分支 dev01 |
修改远程分支地址
1 | git remote set-url origin https://test.git |