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> 
如此得到的文件,自然就和远程分支关联起来了。

参:

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 指令的帮助信息


参考



Comments