[TOC]

概述

上面,我们已经把git都安装完毕了。下面们来讲解一些git的常用的命令。

​ 先看一些git中常见的名词

​ master: 默认开发分支

​ origin: 默认远程版本库

​ Index / Stage:暂存区

​ Workspace:工作区

​ Repository:仓库区(或本地仓库)

​ Remote:远程仓库

Git常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
##新建一个代码库
//在当前目录下新建一个代码库。初始化
$ git init
//新建一个目录,将其初始化为一个代码库
$ git init [project name]
//从远程代码库克隆代码到本地代码库
$ git clone [url]

###########增加/删除/修改文件
//查看修改状态
$ git status
//添加指定目录文件到暂存区
$ git add [dir]
//添加当前目录所有文件到暂存区
$ git add [file1] [file2]
//添加当前目录所有文件到暂存区
$ git add .
//对于同一文件的多处变化。可以实现分次提交
$ git add -p
//删除工作区文件。并将删除放入暂存区
$ git rm [file1] [file2]...
//停止追踪指定文件,但是该文件会保留在工作区
$ git rm --cached [file]
//改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

###########代码提交
//改名文件,并且将这个改名放入暂存区
$ git commit -m [message]
//提交暂存区的指定文件到仓库去
$ git commit [file1] [file2]... -m [message]
//提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a
//提交时显示所有diff信息
$ git commit -v
//使用一次新的提交。替代上一次的提交
//如果代码没有任何新的变化。则用来改写上一次commit的提交信息
$ git commit -amend -m [message]
//重做上一次的commit,并且包含指定文件的新变化
$ git commit -amend [file1] [file2]

###########文件比对

//查看文件变更内容.这个是查看所有本地文件的改动
// 只改动一个文件的话,可以在命令后面加上文件名
$ git diff [file name]

###########分支管理
//查看远程所有分支
$ git branch -r
//查看本地所有分支
$ git branch
//查看本地所有分支和远程分支
$ git branch -a
//3 创建本地分支.但是依然停留在当前分支
$ git branch [branch-name]
// 创建本地分支.并且切换到该分支
$ git checkout -b <branch-name>
//切换到指定分支,并且更新工作区
$ git checkout [branch-name]
//切换到上一分支
$ git checkout -
//建立追踪关系。在现有分分支和指定的远程分支之间
$ git branch --set -upstream [branch-name] [remote-branch]
//3 创建一个分支。与指定的远程分支建立追踪关系
$ git branch --track [branch-name] [remote-branch]
//删除分支
$ git branch -d [branch-name]
//删除远程分支
$ git push origin --delete [branch-name]
$ git branch --dr [remote/branch-name]
//合并指定分支到当前分支
$ git merge [branch]
//衍合指定分支到当前分支
$ git rebase <branch>
//选择一个commit.合并进当前分支
$ git cherry-pick [commit]

###########标签管理
//列出所有本地标签
$ git tag
//基于最新的提交创建标签
$ git tag <tagname>
//删除标签
$ git tag -d <tagname>
//删除远程标签
$ git push origin :refs/tags/[tagname]
//删除tag信息
$ git show [tagname]
//提交指定Tag
$ git push [remote] [tagname]
//提交所有Tag
$ git push [remote] --tags
//新建一个分支,指向某个tag
$ git chekout -b [branch] [tag]

###########查看信息
//显示有变更的文件
$ git status
//显示当前分支的版本历史
$ git log
//显示commit历史,以及每次commit发生变更的文件
$ git log --stat
//根据关键字搜索提交历史
$ git log -S [keyword]
//显示当前分支的版本历史
$ git log
//显示当前分支的版本历史
$ git log
//显示当前分支的版本历史
$ git log

//在clone完成之后,Git 会自动为你将此远程仓库命名为origin(origin只相当于一个别名,运行git remote –v或者查看.git/config可以看到origin的含义),并下载其中所有的数据,建立一个指向它的master分支的指针,我们用(远程仓库名)/(分支名) 这样的形式表示远程分支,所以origin/master指向的是一个remote branch(从那个branch我们clone数据到本地)
$ git remote -v

//一直找不到Git在mac中的安装位置,今天看到一个方法,试了下是可行的。
//在命令行中打入which git, 就会显示git的安装位置了。
which git

文件比对相关:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 显示修改和本地文件比对
git diff [file]

# 显示测试暂存区和上一个commit的差别
git diff --cached [file]

# 显示工作区与当前分支最新的commit的之间的差异
git diff HEAD

# 显示两次提交之间的差异
git diff [first_branch]...[second-branch]

#显示你今天写了多少行代码
git diff --shortstat "@{0 day ago}"

#显示某次提交的元数据和内容变化
git show [commit]

#显示某次提交发生变化的文件
git show --name-only [commit]

# 显示某次提交时候,某个文件的内容
git show [commit]:[filename]

#显示当前的分支的最近几次的提交
git reflog

git stash 相关的命令

我们有时会遇到这样的情况,正在dev分支开发新功能,做到一半时有人过来反馈一个bug,让马上解决,但是新功能做到了一半你又不想提交,这时就可以使用git stash命令先把当前进度保存起来,然后切换到另一个分支去修改bug,修改完提交后,再切回dev分支,使用git stash pop来恢复之前的进度继续开发新功能。下面来看一下git stash命令的常见用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 保存当前工作进度,会把暂存区和工作区的改动保存起来。
# 执行完这个命令后,在运行git status命令,就会发现当前是一个干净的工作区,
# 没有任何改动。
git stash

# 使用git stash save 'message...'可以添加一些注释
git stash save 'message...'


# 显示保存进度的列表。也就意味着,git stash命令可以多次执行。
git stash list

#git stash pop相关
git stash pop //恢复最新的进度到工作区。
# git默认会把工作区和暂存区的改动都恢复到工作区。

# 恢复指定的进度到工作区。
git stash pop stash@{1}
# stash_id是通过git stash list命令得到的
# 通过git stash pop命令恢复进度后,会删除当前进度。


# 除了不删除恢复的进度之外,其余和git stash pop 命令一样。
git stash apply [–index] [stash_id]

# 删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。
git stash drop [stash_id]

# 删除所有存储的进度。
git stash clear