Git 简易使用文档 V1.0
注: Git 就两招 本地命令
和 远程命令
Git 之本地命令
初始化一个新项目
$ git init <project>
克隆一个已经存在的仓库
$ git clone <url>
增加、删除文件
$ git add <files>
$ git rm <files>
查看文件状态
$ git status [dir]
- 在 git 里,文件有以下几种状态
- untracked: 表示尚未添加到版本控制
- tracked: 表示已经添加到版本控制
- changed not staged: 自上一次 commit 后,作了修改,但又未使用
git add
命令把这些文件的状态变成 staged - staged: 自上一次 commit 后,作了修改,并且使用
git add
命令改变这些文件的状态
- 在 git 里,文件有以下几种状态
更改文件状态
$ git reset HEAD [files]
注:假如你增加、修改了几个文件,但这些修改是要分开提交的。如果这些文件都使用 git add
命令修改了状态,这时使用 git commit 命令就会把所有的修改都提交了。使用该命令可以把文件的状态由 staged 变成 changed not staged,但这些文件的所修改的内容没变。
还原文件
$ git checkout <files>
$ git checkout .
提交变更
$ git commit -m 'commit message'
注:每次提交会生成一个唯一的 hash 值。提交信息一定要有意义,例如作了哪些修改,完成什么功能,修复了什么bug,以便日后方便查看。
对比修改
$ git diff
: 对比未暂存修改$ git diff --cached
: 对比已暂存修改$ git diff <commit-hash1> <commit-hash2>
: 对比两次提交的个性
查看分支
$ git branch
$ git branch -v
注: git 里有一个默认的分支叫 master。
创建分支
$ git checkout <new-branch-name>
$ git checkout <new-branch-name> <based-branch-name>
注: 上面第一个命令会基于当前分支创建一个新的分支;第二个命令会基于后面的分支创建一个新的分支。
切换分支
$ git checkout <branch-name>
合并分支
$ git checkout <master>
$ git merge <branch-name>
注: 以上是将分支合并到 master 分支。
删除分支
$ git branch -d <branch-name>
$ git branch -D <branch-name>
忽略某些文件
.gitignore
注:例如不想把编译过程中产生的 .o 文件加入 git,可以在此文件加一行: *.o
查看提交日志
$ git log
$ git log -p
$ git log —stat
$ git log —graph
Git 之远程命令
查看远程仓库
$ git remote
$ git remote -v
$ git remote show <name>
增加、删除、重命名远程仓库
$ git remote add <shortcut> <url>
$ git remote remove <name>
$ git remote rename <old> <name>
获取远程仓库最新动态
$ git fetch <origin>
获取远程仓库最新代码
$ git pull <origin> <master>
$ git pull --rebase <origin> <master>
注: 这条命令会把远程仓库的 master 分支合并到本地的当前分支。使用 --reabse 的好处是不用生成一个新的合并信息。
提交本地变更到远程仓库
$ git push <origin> <master>
$ git push -u <origin> <new-branch-name>
注: 第一条命令是把本地当前分支提交到远程仓库的 master 分支;第二条命令是把本地当前分支提交到远程仓库的新分支。
Git 使用规范
代码提交守则
- 粒度控制:每次提交要具有完整的意义;无直接关联的文件分批提交
- 提交信息:提交信息一定要写清楚,例如完成什么功能,修复什么bug,哪怕写很多都没关系
- 编译、运行、测试不通过的代码不能提交