# GIT
# 基本命令
1. git init 初始化仓库
2. git clone `url`(远程仓库地址) 克隆项目
1
2
3
2
3
# 文件操作
- 添加工作区文件到暂存区
git add 文件名|目录(可以添加多个,中间用空格间隔) 跟踪文件
1
2
2
- 恢复暂存区文件
git restore 文件|目录 撤销在工作区但不在暂存区的文件更改,会更改文件
git restore --staged 将暂存区的文件更改撤销到工作区,但不会更改文件
1
2
3
4
2
3
4
- 删除文件
git rm 文件名 --cached 删除在暂存区中的文件,不会删除工作区中的文件
1
2
2
- 提交到版本库
git commit 文件名 | 目录(可连续添加多个,用空格间隔)-m 提交日志
git commit 文件名 | 目录(可连续添加多个,用空格间隔)--amend 合并到上一个版本库(会打开一个vim编辑器用来编辑上一个的提交日志)
git commit -a 提交所有更改的文件(可与其他参数串联使用)
1
2
3
4
5
6
7
2
3
4
5
6
7
- 同步远程版本库
git pull <remote> branch 合并远程版本库到本地
比如:`git pull origin master`
git push <remote> branch 推送当前版本库到远程分支
比如: `git push origin dev`
-u,--set-upstream 设置默认推送到远程版本库的分支
比如: `git push -u origin dev`
git fetch 查看远程版本库是否有新的更新
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- 回退版本库 (git reset)
git reset <commitID> 移动`HEAD`的指针到指定的历史`commitID`
-- mixed ,保留原来的工作区不变,回退版本带来的差异混入到**工作区** (默认参数)
--hard 清空暂存区和工作区,看上去有撤销的操作
--cached 当前的工作区不受影响,由`HEAD`指针移动带来的新差异放到**暂存区**
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 查询
- 查看当前工作树状态
git status
1
- 查看被git管理的文件
git ls-files
1
- 查看日志记录
git log
--graph 以图形列表显示历史记录版本,显示分支分叉路线
- <number> 显示指定个数的版本日志,默认从最近的记录开始
git reflog 查看git操作历史记录,可恢复`git reset`回退的版本
1
2
3
4
5
6
7
2
3
4
5
6
7
- 版本库日志统计
git rev-list
--all 显示所有**commitID**
--all --count 查看所有分支下的**commit**数量
1
2
3
4
5
6
2
3
4
5
6
- 远程主机
git remote 查询远程主机名称
-v 查看同步跟踪的分支地址
案列:
`git remote -v`
`origin git@github.com:konglingwen94/my-study-notes.git (fetch)`
`origin git@github.com:konglingwen94/my-study-notes.git (push)`
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 分支管理
- 查看
git branch 查看所有分支和当前分支
-l, --list 列出所有本地分支
-r, --remote 列出所有远程分支
-m <oldBranch> <newBranch> 重命名当前分支
-a, --all 列出所有分支(包含远程和本地分支)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- 切换分支
git checkout <branch> 切换到新分支
-b 基于当前分支的暂存区内容新建并切换到新分支
例如:`git checkout -b newbranch`
1
2
3
4
5
6
7
2
3
4
5
6
7
- 删除分支(需要先前换到其他分支才能做删除操作)
git branch -d <local-branch> 删除指定名称的本地分支
git push origin -d [remote-branch] 删除指定名称的远程分支
1
2
3
4
5
2
3
4
5
- 更新远程服务器分支状态到本地 (删除本地远程不存在的分支)
git remote update origin --prune
1
2
2
- 合并指定分支到当前分支
git merge [branch]
1
2
3
2
3
# Git stash
添加工作区内容到git
存储栈(会把工作区内容移除)
git stash <save "save message"> 添加存储,默认存储信息为`stash@{0}`
git stash -p 以交互式命令进行选择需要存储的文件,需要存储选择`y`,否则选择`n`
git stash list 查看存储列表
git stash show <stash@{n}> 查看做了哪些改动,默认查看第一个存储
git stash show <stash@{n}> -p 查看具体改动内容,默认显示第一个存储 ,类似于`git diff`
git stash pop <stash@{n}> 从存储栈弹出第一个存储并应用到工作区
git stash drop <stash@{n}> 从存储栈中删除指定的存储,默认删除第一个。
git stash apply <stash@{n}> 应用一个存储,不从存储栈删除
git stash clear 清空存储栈
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Git Diff & Git show
git diff <file> 比对所有工作区和暂存区之间的文件内容变动
git diff --cached <file> 比对所有暂存区和版本库之间的文件内容变动
git show 查看最近一次版本库的内容
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8