查看下图,了解git的几个概念,会对git的使用有一个大致的了解。

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

Git本地版本库操作

1、查看git全局配置信息

1
$ git config -l

2、配置git的全局变量

1
2
$ git config --global user.name [username]
$ git config --global user.email [email]

3、查看本地git公钥和私钥

1
$ cd ~/.ssh

4、生成git公钥和秘钥

1
$ ssh-keygen -t rsa -C [email]

5、将本地目录初始化成本地git版本库

1
2
$ cd [directory]
$ git init

6、本地分支管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ git branch  // 查看本地所有分支及当前所在分支情况

$ git branch [branchname] // 当branchname不存在时,则创建新的branchname分支

$ git checkout [branchname] // 切换到branchname 分支上

$ git checkout -b [branchname] // 创建新分支并切换到新分支上

$ git checkout -b [branchname] [tagname] // 新建一个分支指定到某个tag

$ git checkout -b [branchname] [remote|origin]/[branchname] // 新建一个本地分支并且关联远端分支

$ git branch -d [branchname] // 删除某个分支

$ git merge [branchname] // merge某个分支到当前分支

$ git merge [branchname1] [branchname2] // 同上,将branchname1 合并到 branchname2上

$ git rebase [branchname] // 将branchname 合并到当前分支

$ git cherry-pick [commit] // 遴选某个commit点到当前分支并作为新的commit提交

关于merge和rebase的区别,大家可以点击这里去查看,说的比较详尽,结合实战去理解。

7、版本管理

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
$ git status  // 查看当前分支中的文件状态

$ git add [filename] // 添加某个文件到暂存区(此文件需有改动)

$ git add . // 添加所有改动过的文件到暂存区

$ git commit -m [message] // 将暂存区的文件提交到本地仓库区

$ git commit --amend -m [message] // 重新提交一次或改写一次提交信息到本地仓库区

$ git checkout [filename] // 丢弃某个修改的文件

$ git checkout . // 丢弃所有的修改

$ git log // 查看提交记录

$ git log [branch] // 查看某个分支的log

$ git log --pretty=oneline // 将每次提交的记录精简成一行显示

$ git blame [filename] // 查看某个文件是谁在什么时间修改了什么内容

$ git reset [filename] // 将指定文件从暂存区恢复到上一次commit的提交,但工作区文件不变

$ git reset [commit] // 将暂存区内容重置到指定commit上,但工作区不变

$ git reset --hard // 重置暂存区和工作区,使其保持和上一次commit的提交一致

$ git reset --hard [commit] // 将暂存区和工作区重置到指定commit时一致

$ git revert HEAD // 恢复到上一次提交,并创建一次新的提交

$ git revert [commit] // 恢复到指定的某一次提交,并创建新的提交

$ git push --force // 强制向远端仓库推送,并覆盖远端内容,使其保持和本次提交的一致

8、查看文件差异

1
2
3
4
5
6
7
8
9
$ git diff [filename]  // 比较当前文件和暂存区文件的差异

$ git diff // 同上

$ git diff [commit1] [commit2] // 比较两次提交之间的差异

$ git diff [branch1] [branch2] // 比较两个分支之间的差异

$ git diff --staged / --cached // 比较暂存区和版本库之间的差异

9、标签管理

1
2
3
4
5
6
7
8
9
10
11
12
13
$ git tag // 查看当前版本库中的所有tag

$ git tag [tagname] // 在当前commit上新建一个tag

$ git tag [tagname] [commit] // 在指定commit上新建一个tag

$ git show [tagname] // 查看tag信息

$ git push [remote|origin] [tagname] // 提交指定tag到远端仓库

$ git push [remote|origin] --tags // 提交所有tag到远端仓库

$ git push [remote|origin] --delete [tagname] // 删除远端tag

Git远端仓库管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ git remote add [remote|origin] 'remote url'  // 将本地仓库与远端仓库关联

$ git push -u [remote|origin] [branchname] // 将某个分支的所有修改推送到远端并实现关联

$ git push [remote|origin] [branchname] // 推送某个分支到远端

$ git push [remote|origin] --force // 强行向远端推送当前分支,并覆盖远端的当前分支内容,即便存在冲突

$ git pull [remote|origin] [branchname] // 更新远端变更到本地仓库,并和本地文件合并

$ git fetch [remote|origin] [branchname] // 下载远端更新,但不和本地文件合并

$ git branch -r // 查看远端的所有分支

$ git branch -r -D [remote|origin] [branchname] // 删除远端某个分支

$ git branch origin :[branchname] // 删除远端分支后同步更新到远端

$ git branch --set-upstream [branchname] origin/[branchname] // 将本地分支与远端分支进行关联

附一张git命令速查表

参考资料来源:常用Git命令清单Git常用命令备忘Git入门私房菜