Git命令整理
最近更新:2018-8-31 11:06
这篇文章主要记录的是关于 Git 的一些常用的命令,当一些命令太久没有使用忘记时可以在这里重新学习! 下载 Git
请点击这里
查看版本号
1 | $ git -version |
查看用于名和邮箱
1 | $ git config --global user.name |
设置用户名和邮箱
1 | $ git config --global user.name "Your name" |
查看用户是否已经有 ssh
密钥
进入用户名录1
$ cd ~
查看是否有 .ssh
目录1
$ ls -a
如果有.ssh
目录,并且确定不是自己生成的,则把该目录删掉1
$ rm -rf .ssh
生成用户 ssh
密钥
创建 .ssh
目录1
$ mkdir .ssh
创建 .ssh key
,输入以下命令,并一直按 Enter 键,直到完成创建1
$ ssh-keygen -t rsa -C "Your email address"
查看生成的 .ssh
目录的内容1
2$ cd .ssh
$ ls
使用生成的 ssh key
在 .ssh
目录下,使用如下命令打开 id_rsa.pub
文件1
$ cat id_rsa.pub
复制 id_rsa.pub
文件中的内容,将该公钥添加到代码托管平台中就可以使用 Git了。
常用的代码托管平台有国外的 GitHub 和国内的 Gitee
GitHub:
是使用最为广泛的的远程代码托管平台之一,是国外的,但是一般情况下你的代码在上面都是公开的,谁都可以查看和下载,除非你向该平台定期缴纳费用Gitee:
又叫 码云 是国内比较有名的远程代码托管平台之一,在该平台上你可以免费地设置你的代码是否公开或私有,如果你希望你的某些代码不被别人看到可以考虑使用该平台
创建本地代码仓库
- 打开终端,使用如下命令进入需要创建项目的目录
1 | $ cd [target path] |
- 创建项目跟目录并进入建好的项目跟目录
1 | $ mkdir [Project Name] |
- 查看项目的绝对路径
1 | $ pwd |
- 创建仓库
1 | $ git init |
从远程仓库中直接拉取(克隆)项目到本地
直接克隆
1 | $ git clone git@github.com:Jinphy/GitHubProject.git (GitHub平台) |
克隆到指定目录
1 | $ git clone git@github.com:Jinphy/gitHubProject.git [folder] |
注: 以上只列举了
GitHub
和Gitee
两个平台的远程仓库,其他远程仓库的用法于此类似
拉取远程分支到本地
将远程分支 dev
拉到本地,只拉取不检出,即拉取前在哪个分支,拉取后还在哪个分支1
$ git fetch origin dev
注:
fetch
命令与pull
不同 ,后者是把指定的远程分支拉到本地当前HEAD所在的分支上而不会在本地新建一个新的同名分支
拉取远程分支并检出到该分支
将远程分支 dev
拉到本地并把HEAD切换到该分支1
$ git checkout -b dev(本地分支) origin/dev(远程分支)
指令:remote
前提
- 本地:有一个项目叫
GiteeProject
- 远程:在
Gitee
平台上有个个项目叫GiteeProject(http://gitee.com/JinphyGiteeProject)
- 本地:有一个项目叫
关联本地仓库到远程
1 | $ git remote add gitee git@gitee.com:Jinphy/GiteeProject.git |
注:
- 上面中的
gitee
可以自己命名,它时远程仓库在本地中的一个名称,叫什么不会对远程仓库有任何影响- 如果远程仓库时
GitHub
,则上面的命令中的gitee.com
可以改成github.com
- 查看本地项目关联远程仓库的情况,将会显示所有关联的远程仓库及其读写权限
1 | $ git remote -v |
- 解除与某个远程仓库的关联
1 | $ git remote rm gitee |
注: 上面的
gitee
是远程仓库在本地关联的名字
- 更改远程分支在本地中的名字
1 | $ git remote rename [old_name] [new_name] |
注: 例如从远程仓库中
clone
下来的项目在本地的默认分支的名字是origin
,现在如果这个远程仓库是GitHub上面的,则可以改成github
;如果是Gitee上面的,则可以改成gitee
指令:checkout
检出本地已有分支1
$ git checkout [branch_name]
从当前分支中检出新的分支,并把 HEAD
指向该新分支1
$ git checkout -b [new_branch_name]
从当前分支检出到新分支,并进行3路合并1
$ git checkout -m [branch_name]
注: 所谓
3路合并
就是将当前分支(修改前的)、当前分支(修改后但是还未提交的)以及新检出的分支进行合并,并将合并结果更新到新检出的分支中。值得注意的是,新检出的分支的提交状态与旧分支的提交状态一致(即如果旧分支是未提交的则新检出的分支也是未提交的),最后旧分支的状态将回到最后一次提交后(修改前)的状态
从当前分支检出新的分支,并放弃所有修改但未提交的内容1
$ git checkout -f [branch_name]
注: 执行该命令后,相当于放弃在之前分支修改但未提交的所有内容,旧分支的状态将回到最后一次提交后修改前的状态。
指令:branch
查看本地分支1
$ git branchr
查看远程分支1
2
3$ git branch -r
或
$ git branch --remoter
查看所有分支(本地、远程1
2
3$ git branch -a
或
$ git branch --all
查看分支,并带有最后一次提交的信息1
2
3$ git branch -v
或
$ git branch -verbose
删除已经完全合并后的分支1
$ git branch -d
注: 执行该命令只能删除完全合并后的分支,即只有在当前分支的所有修改提交都被合并到其他分支上之后才能删除,否则删除不成功,并提示你该分支的修改提交还没有被合并,所以该操作是安全的
强制删除指定分支1
$ git branch -D
注: 该指令执行后指定的分支将会被删除,即使该分支有修改提交未被合并到其他分支上,所以该指令要慎用,一般情况请使用上面一条指令
指令:add
**
将某个新增或修改后的文件添加到仓库索引中1
$ git add [file_name]
将所有新增或修改后的文件添加到索引中1
$ git add .
注:
.
是一个通配符,匹配所有文件,也可以根据需求只匹配一部分的文件。例如,将.
换成*.s
时,将匹配所有文件名以.s
结尾的文件