Git 客户端最常用指令记录

Git 应该是目前(2014年底)最先进的 VCS,有庞大的指令集,但在实际使用中,很少一部分指令,已经基本上能满足需求了。这里记录自己最常用的一些基本的 git 指令,供备份,供查找。

1. clone

复制远程项目

git clone <project url>

支持 https, ssh 等协议

整个过程中会要求输入用户名和密码等

2. pull

获取文件

git pull 从默认仓库的默认关联的仓库中拉取

git pull origin develop 从 origin 的 develop 分支拉取

3. remote

查看远程仓库

git remote 查看远程仓库,一般默认的就是 origin

git remote -v 查看远程仓库的详细信息

git remote add origin https://git.oschina.net/hello/world.git 将本地项目同远程仓库关联起来,本地库的名称需和远程相同

git remote rm origin 将本地项目和远程仓库解除关联

git remote prune origin 同步远程分支信息到本地,远程已经删除分支,本地的引用也会删除。

应用举例:

为了代码安全,我们有时需要将同一个项目推送到多个远程仓库,也可能改换远程仓库。这就需要:

1. 通过 git remote rm origin 解除代码和现远程仓库的关联

2. 通过 git remote add origin ... 添加新的关联

3. 通过 git push -u origin a_branch 推送到具体某 branch 并建立关联,以後的推送可以不加 -u 参数

4. branch, merge, remote, pull

远程分支

git branch -r 查看远程分支

git branch -r -v 查看远程分支详情

git branch -vv 查看本地 branch 和远程 branch 的关联情况

远程分支的创建,一般都可以直接通过 web 方式操作,这里不记录。

本地分支

git branch 查看当前分支

git branch <branch name> 创建分支,在哪个分支上创建的,就以哪个分支的起点为起点

git branch -d <branch name> 删除分支

git branch -D <branch name> 强制删除分支

本地分支——分支切换

git checkout <branch name> 切换到别的分支

git checkout -b <branch name> 在当前分支的代码点上创建一个新的分支,并切换到新的分支。这条命令相当于 git branch <branch name>, git checkout <branch name> 两条命令的组合。

本地分支——分支合并

git merge <branch name> 把某分支的代码合并到当前分支

git merge <branch name> --no-ff 把某分支的代码合并到当前分支,同时记录合并痕迹

分支管理——关联分支

git branch -vv 可以简明地查看到本地分支和远程分支的关联状态

git remote show origin 可以更清楚查看本地分支和远程分支的关联状态(分 git pull, git push 两种情况分别显示)

关联本地和远程的分支,可以这样:

git branch -b <local branch name> -t origin/<remote branch name> 这个命令最优,将 pull 和 push 都与远程的分支关联起来了。

这条指令的 -t 标记可以省略:

git branch -b <local branch name> origin/<remote branch name>

关联本地和远程的分支,还可以这样:

git branch --set-upstream-to=origin <remote branch name> 将当前的本地分支的 push 和远程的 origin <remote branch name>关联起来

更原始的,可以在 pull 的时候这样

git pull origin <remote branch name> 

如此得到的文件,自然就和远程分支关联起来了。

参:

http://serverfault.com/questions/175052/how-to-tell-which-local-branch-is-tracking-which-remote-branch-in-git

http://stackoverflow.com/questions/4950725/how-do-i-get-git-to-show-me-which-branches-are-tracking-what

5. status, add, rm, diff, commit

git status 查看当前状态

git add <code path> 添加一个新建或修改过的文件到暂存区

git rm <code path> 删除版本库中的文件,并将此记录存于暂存区

git diff 比较工作区的文件和版本库中的文件有何不同

git diff <file> 比较工作区的文件和版本库中的文件有何不同

git commit -m "<comment>" 提交,将暂存区的文件提交到版本库

6. stash

git stash 暂存当前工作

git stash list 列出暂存列表

git stash pop 恢复前面暂存的工作

7. reset

後悔药

git reset HEAD <file> 撤销刚才的 git add 或 git rm 操作,即将文件从暂存区回退到工作区

git reset HEAD@{n} 对已经 commit 的操作,会将文件从版本库回退到工作区

git reset --hard HEAD@{n} 撤销 commit

git checkout -- <file> 将工作区的改动全部丢弃

对已经 push 的後悔药,这里不详述,可以参本站专门的《Git 後悔药:git reset》有较详细的记录

8. push

Push to remote

git push 最简单的推送命令,将推送到默认关联的分支上

git push origin develop 指定推送到某远程的分支上

git push -u origin develop 指定推送到某远程的分支上,并设置默认分支为 origin/develop

9. rebase

rebase 即所谓的变基指令,以下是一个应用实例

git checktout dev
git checkout -b bug123
...
git checkout dev
git pull
git checkout bug123
git rebase dev
git checkout dev
git merge bug123

rebase 还可用于对最後若干次 commits 进行整理。

git rebase HEAD~3 // 对最後三次提交进行整理,

按屏幕提示有 squash 等操作。

10. log

查看历史

git log --pretty=oneline 以简易的方式查看历史

git log --graph --pretty=oneline --abbrev-commit 通过可视化方式查看 git 日志

11. help

git help 查看帮助

git help <command> 查看某指令的帮助,如 git help branch 查看 branch 指令的帮助信息

参考

  1. 廖雪峰的《Git 教程》http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
  2. 官网:http://git-scm.com/