Git速查表/参考手册

"lock"

Posted by yueLng on 2015-05-10

索引

git_model

创建

1
2
$ git clone ssh://user@domain.com/repo.git #复制一个已创建的仓库
$ git init #创建一个新的本地仓库

本地修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ git status #显示工作路径下已修改的文件
$ git diff #显示与上次提交版本文件的不同
$ git add . #把当前所有修改和新增的文件加入到下次提交中
$ git add -u #把当前所有手动删除的状态为Deleted的文件加入到下次提交中
$ git add -A #把当前所有修改、新增,删除的文件加入到下次提交中
$ git add -p <file> #把对某个文件的修改添加到下次提交中
$ git commit -a #提交本地的所有修改
$ git commit #提交之前已标记的变化
$ git commit -m 'message' #附加消息提交
#提交到之前的某个时间点:
$ git commit --date="`date --date='n day ago'`" -am "Message"
#修改上次提交 Don't amend published commits!
$ git commit --amend
把当前分支中未提交的修改移动到其他分支
$ git stash
$ git checkout branch2
$ git stash pop
<span id="3"></span>

搜索

1
2
$ git grep "Hello" #从当前目录的所有文件中查找文本内容
$ git grep "Hello" v2.5 #在某一版本中搜索文本

提交历史

1
2
3
4
5
$ git log #从最新提交开始,显示所有的提交记录(显示hash,作者信息,标题和时间)
$ git log --oneline #显示所有提交(仅显示提交的hash和message)
$ git log --author="username" #显示某个用户的所有提交
$ git log -p <file> #显示某个文件的所有修改
$ git blame <file> #谁,在什么时间,修改了文件的什么内容

分支与标签

1
2
3
4
5
6
$ git branch #列出所有的分支
$ git checkout <branch> #切换分支
$ git branch <new-branch> #基于当前分支创建新分支
$ git branch --track <new-branch> <remote-branch> #基于远程分支创建新的可追溯的分支
$ git branch -d <branch> #删除本地分支
$ git tag <tag-name> #给当前版本打标签

更新与发布

1
2
3
4
5
6
7
8
9
10
11
12
$ git remote -v #列出对当前远程端的操作
$ git remote show <remote> #显示远程端的信息
$ git remote add <remote> <url> #添加新的远程端
$ git fetch <remote> #下载远程端版本,但不合并到HEAD中
$ git remote pull <remote> <url> #下载远程端版本,并自动与HEAD版本合并
$ git pull origin master #将远程端版本合并到本地版本中
$ git push remote <remote> <branch> #将本地版本发布到远程端
$ git push --tags #发布标签
#删除远程端分支
$ git push <remote> :<branch> #(since Git v1.5.0)
$ git push <remote> --delete <branch> #(since Git v1.7.0)

合并与重置

1
2
3
4
5
6
7
8
9
$ git merge <branch> #将分支合并到当前HEAD中
$ git rebase <branch> #将当前HEAD版本重置到分支中
$ git rebase --abort #退出重置
$ git rebase --continue #解决冲突后继续重置
$ git mergetool #使用配置好的merge tool 解决冲突
#在编辑器中手动解决冲突后,标记文件为`已解决冲突`
$ git add <resolved-file>;
$ git rm <resolved-file>;

撤销

1
2
3
4
5
6
7
8
$ git reset --hard HEAD #放弃工作目录下的所有修改
$ git reset HEAD #移除缓存区的所有文件(i.e. 撤销上次`git add`):
$ git checkout -- <file> #放弃某个文件的当前本地修改
$ git checkout HEAD <file> #放弃某个文件的所有本地修改
$ git revert <commit> #重置一个提交(通过创建一个截然不同的新提交)
$ git reset --hard <commit> #将HEAD重置到上一次提交的版本,并放弃之后的所有修改
$ git reset <commit> #将HEAD重置到上一次提交的版本,并将之后的修改标记为未添加到缓存区的修改
$ git reset --keep <commit> #将HEAD重置到上一次提交的版本,并保留未提交的本地修改

git内部原理

拓展教程

  1. 猴子都能懂的Git入门
  2. 沉浸式学 Git
  3. Git简易指南
  4. Git参考手册
  5. Pro Git中文版
  6. 前言 · Pro Git 第二版 简体中文
  7. 使用原理视角看 Git – Coding 帮助中心
  8. 如何部署软件 – Coding 帮助中心