总结一下自己开发中常用的git命令,供日后随时查看,这些命令已经基本满足一般的开发要求,以后会根据需要不断更新。如果要深入了解推荐我学习git的启蒙教程:廖雪峰Git教程 和官方的Git 手册

下载

  1. 到官网下载安装包安装(window 或 mac os) 下载
  2. 命令安装(ubuntu)
1
sudo apt-get install git

创建

  1. 从远程仓库克隆
1
git clone <仓库地址>
  1. 空目录下创建
1
git init

配置

  1. 身份
1
2
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
  1. 关联远程仓库
1
2
git remote add origin <仓库地址>  // 初次关联
git remote set-url origin <仓库地址> // 修改关联

最简单的团队协作流程

1
2
3
4
5
git clone <仓库地址> 
git add [ . 或 文件]
git status
git commit -m "commit的信息"
git push // 如果失败,先执行 git pull ,然后再次 push

基于branch的团队协作流程

1
2
3
4
5
6
git clone <仓库地址> 
git checkout -b [自己的分支或功能的分支]
git add [ . 或 文件]
git status
git commit -m "commit的信息"
git push origin <分支> // 如果失败,先执行 git pull origin <分支> ,然后再次 push

利用 github 或 gitlabde pull request功能进行代码审核和合并

  1. 创建一个pull request, 如果提示可以合并,点击按钮创建一个pull request。如果提示不能合并,表示代码有冲突,执行下面命令:
1
2
3
4
5
6
git checkout master  //假定需要合并到master
git pull
git checkout <分支>
git merge master
//解决冲突后提交新 commit
git push origin <分支>

这样就可以创建pull request 了。
2. 将pull request 给其他人审核,如果没有问题就可以直接点击merge pull request按钮,这时分支已经被合并了。如果有修改意见,可以在本地分支上修改后再次执行上面的步骤,但不需要再新建pull request , 原来的pull request 会展示你新push的commit.
3. 成功合并后可以拉取合并分支的最新代码,删除被合并的分支

1
2
3
4
git checkout master
git pull
git branch -d <分支>
git push origin -d <分支>

rebase

  1. 使用rebase代替merge。团队应统一选用哪种方式合并分支,避免混乱。
1
2
3
4
//当前分支为 branch1
git rebase master // 假定要合并到master
git checkout master
git merge branch1

执行git rebase master 如果有冲突,在branch1分支上处理冲突并提交新commit,然后继续rebase:

1
git rebase --continue

如果不想处理冲突,可以取消rebase:

1
git rebase --abort

stash

临时保存改动,不能在另一个分支上继续保存

1
2
3
4
5
git stash // 在branch1上临时保存改动
git checkout master
... // 到master上处理事情
git checkout branch1
git stash pop //找回之前的改动

tags

标签

1
2
3
4
5
git tag <tagname> //在当前commit上打标签
git tag <tagname> <commit> //在指定commit上打标签
git tag -a <tagname> -m "message" //添加标签说明
git tag //查看标签
git checkout <tagname> //切换到tag

修改commit

  1. 修改最新的commit
1
2
git add [ . 或 文件]
git commit --amend
  1. 修改指定位置的commit
1
2
3
4
5
6
git rebase -i <指定commit的前一个commit>
//选择要操作的类型
//目前位置停在指定的commit上
git add [ . 或 文件]
git commit --amend //修改了指定commit
git rebase --continue //将后面的commit 接上
  1. 删除commit
1
2
git reset 目标commit //之后的commit会撤销,但没有消失
//可带3个参数 --hard --soft --mixed(默认)
  1. 删除指定位置的commit
1
2
git rebase -i <指定commit的前一个commit>
// 删除commit记录
  1. 修改远程仓库的自己的分支, 先修改本地仓库,再强行push
1
git push origin <分支> -f
  1. 修改(删除)远程仓库的共享的分支,用新commit抵消旧commit,再push和merge
1
2
git revert <要删除的commit> // 删除时用
git push