常用Git命令

一、全局配置

Git 的设置文件为 .gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。

1
2
3
4
5
6
7
$ git config --list //显示当前的Git配置
$ git config -e [--global] //编辑Git配置文件
$ git config [--global] user.name "[name]" //设置提交代码时的用户名字
$ git config [--global] user.email "[email address]" //设置提交代码时的用户地址

二、创建 SSH Key

由于本地的 Git 仓库和 Github 仓库之间的传输是通过 SSH 加密。在用户的主目录下,看看有没有 .ssh 目录,如果有,再看看目录下有没有 id_rsa 和 id_rsa.pub 文件,id_rsa.pub文件的内容就是 Key, 如果已经有了,可直接跳到下一步。没有则:

1
ssh-keygen -t rsa -C "xxxxxx@xx.com"

三、创建版本库

1
2
3
4
5
6
$ git init //在当前目录新建一个Git代码库
//此时当前目录下多了一个.git的目录,这个目录是来跟踪管理版本库的。
$ git init [project-name] //新建一个目录,将其初始化为Git代码库
$ git clone [url] //下载一个项目和它的整个代码历史

四、远程库

添加后远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道远程库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ git remote add origin git@github.com:sid/learngit.git //把本地的仓库和刚刚创建的Github仓库关联
$ git clone git@github.com:sid/gitskills.git // 克隆远程库
$ git remote rm origin // 删除远程库origin
$ git fetch [remote] // 下载远程仓库的所有变动
$ git remote -v // 显示所有远程仓库
$ git remote show [remote] // 显示某个远程仓库的信息
$ git remote add [shortname] [url] // 增加一个新的远程仓库,并命名
$ git pull [remote] [branch] // 取回远程仓库的变化,并与本地分支合并
$ git push [remote] [branch] // 上传本地指定分支到远程仓库
$ git push [remote] --force // 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --all //推送所有分支到远程仓库

五、添加/删除文件

1
2
3
4
5
6
7
$ git add README.md //添加指定文件到暂存区
$ git add -A //添加当前目录的所有文件到暂存区
$ git rm README.md //删除工作区文件,并且将这次删除放入暂存区
$ git mv [file-original] [file-renamed] //改名文件,并且将这个改名放入暂存区

六、代码提交

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ git commit -m 'first commit' //提交暂存区到仓库区
$ git commit -a //提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -v //提交时显示所有diff信息
$ git commit --amend -m [message] //使用一次新的commit,替代上一次提交
//如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend [file1] [file2] //重做上一次commit,并包括指定文件的新变化
```
七、撤销修改
---
```bash
$ git checkout [file] // 恢复暂存区的指定文件到工作区
$ git checkout . // 恢复暂存区的所有文件到工作区
$ git reset [file] // 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset --hard // 重置暂存区与工作区,与上一次commit保持一致

八、分支

1
2
3
4
5
6
7
8
9
10
11
$ git branch // 列出所有本地分支
$ git branch -r // 列出所有远程分支
$ git branch -a // 列出所有本地分支和远程分支
$ git branch [branch-name] // 新建一个分支,但依然停留在当前分支
$ git checkout -b [branch] // 新建一个分支,并切换到该分支
$ git merge [branch] // 合并指定分支到当前分支

九、查看信息

1
2
3
4
5
6
7
8
9
$ git status // 显示有变更的文件
$ git log // 显示当前分支的版本历史
$ git log --stat // 显示commit历史,以及每次commit发生变更的文件
$ git diff //显示暂存区和工作区的差异
$ git diff HEAD // 显示工作区与当前分支最新commit之间的差异