三、git用法之常用命令

三、git用法之常用命令

1、git clone –将远程项目下载到本地

进入目标文件夹,右击选择git bash here,执行如下命令

1
git clone git@git.soydai.cn:liuxuewen/static-file-3.0.git

或者

1
git clone http://git.soydai.cn/liuxuewen/static-file-3.0.git

区别:

  • 第1种使用ssh协议下载,第二种使用http协议,而Git支持多种协议包括 ssh、http、https;  
  • 通过http、https协议下载时,需要输入 Username、Password 登录成功才会下载到本地;  
  • 通过ssh支持的原生git协议速度最快。

2、git add –将文件添加至缓存区

进入目标文件夹,右击选择git bash here,执行如下命令

1
git add .  添加所有未版本控制文件对象
1
git add www/js/a.js   添加具体未版本控制对象

3、git remote –远程主机设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#列出现存远程主机
git remote

#列出远程主机详情及地址
git remote -v

#设置远程主机自定义名称及地址
git remote add yourName url
如 git remote add monkeygeek git@github.com:monkeygeek/Test.git

#删除指定名称的远程主机信息
git remote remove yourName

#重命名远程主机
git remote rename 原名字 新名字

#展示远程主机详细信息
git remote show 主机名

为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。

4、设置别名

可以针对git默认命令进行别名设置,效果同使用元命令相同,例如:

1
$ git config --global alias.ph push

5、git commit –将缓存区文件提交至库

由工作区提交至缓存区

1
git commit -m '修改xxxbug'     ------描述并提交到本地当前分支

6、git pull –取回远程分支的更新并于本地分支合并

1
git pull <远程主机名> <远程分支名>:<本地分支名> //相当于git fetch + git merge,拉取远程分支并merge。
1
git pull --rebase : 相当于git fetch + git rebase,拉取远程分支并进行rebase操作。
1
git pull 直接拉取默认
1
git pull origin xxx   直接拉取xxx分支代码到本地

7、git push –将本地分支的更新推送到远程分支

1
git push origin 本地分支 : 远程分支 //将本地缓存推送到远程分支

8、git merge 和 git rebase 的区别

1
git merge 被合并分支名称    (例如项目A合并项目B,则在项目A中执行git merge B) 

举个例子:

A和B两个人进行合作开发,同时在develop分支上开启各自的功能分支featureA和featureB进行开发,A在10:00提交了A1,12:00提交了A2,16:00提交了A3,并且合并到develop分支,此时develop分支状态为:

1
Head -> A1 -> A2 -> A3

而B则分别在9:00提交了B1,在11:00提交了B2,在17:00提交了B3,此时对于B来说,合并到develop分支有两种方式,使用rebase和merge。

1
2
3
4
// 根据提交的先后顺序进行排序
merge : Head -> B1 -> A1 -> B2 -> A2 -> A3 -> B3
// 根据提交的先后进行排序
rebase: Head -> A1 -> A2 -> A3 -> B1 -> B2 -> B3

9、git branch –本地分支管理

列出本地已经存在的分支,并且在当前分支的前面加“*”号标记。

1
2
3
4
5
6
7
8
git branch :列出本地分支
git branch -r : 列出远程分支
git branch -a: 列出本地分支和远程分支
git branch <name>: 创建一个新的本地分支
git branch -m oldbranch newbranch: 重命名分支
git branch -d branchname: 删除本地分支
git push origin --delete branchname:删除远程分支
git push origin yourBranch 提交本地分支到远程

10、git remote –远程分支管理

列出已经存在的远程分支

1
git remote -v: 列出详细信息,在每一个名字后面列出其远程url

将远程仓库连接地址添加至本地某仓库,使之成为本地仓库的远程地址

1
git remote add <name> <url>:在url创建名字为name的仓库,name为远程仓库的名字。

11、git checkout –迁出分支、切换分支、迁出单个文件

1
2
3
git checkout -b 本地分支名 origin/远程分支名   //拉取远程分支并创建和切换到本地分支
git checkout 本地分支名 //切换本地分支
git checkout --patch 目标分支名 文件路径 //合并两个分支中单个的文件

12、git stash 和 git pop

在执行pull操作时会遇到提示即将覆盖文件,这个时候可以使用stash进行备份,之后再进行获取保存内容,git将自动进行合并

1
2
3
4
git stash:是备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop:从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list:显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear:清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。

13、tag –为分支添加标记

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 列出本地tag
$ git tag

// 添加tag
$ git tag -a v0.1.2 -m “0.1.2版本”

// 切换到tag的位置
$ git checkout -b [branch] [tagname]

// 删除tag
$ git tag -d [tagname]

// 推tag
$ git push origin –tags
$ git push origin [tagname]

14、git config查看/修改用户名和地址

本地git的用户名和邮箱是作为身份标识,仅仅是标识。

1
2
git config user.name
git config user.email

15、git fetch –取回远程分支但不与本地分支合并

1
2
git fetch //在服务端创建分支后本地通过git branch -a拉去远程分支发现没有最新创建的这时需要刷新本地分支
git fetch origin 远程分支名 : 本地分支名 //拉取远程分支到本地分支

16、git status –查看本地文件修改状态

查看需要提交的文件

17、git reset –用户版本库回退(改变HEAD指向)

  • git –hard:将缓存区、工作区强制与分支仓库保持一直,换句话说,工作区、缓存区内容会被重置有丢失风险,这也是git稍有的危险命令。如git reset –hard HEAD^ 回退到上一次commit,当然也可以指定commit版本
  • git –soft:保留工作区并把重置带来的差异放进暂存区,此命令将造成工作区与分支存在差异,使工作区文件为修改状态。缓存区与分支保持一直。
  • git –mixed:将分支内容、缓存区内容、工作区内容共同融合保存到工作区,并清空缓存区,此时缓存区与工作区存在不一致。

18、git config –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
#分别查看系统\全局\本地配置,优先级为local>global>system
git config --system -l
git config --global -l
git config --local -l

#设置全局用户名\用户邮箱
git config --global user.name "yourName"
git config --global user.email "yourEmail"

#设置项目本地用户名\用户邮箱
git config --local user.name "yourName"
git config --local user.email "yourEmail"

#缓存项目本地的rsa对应的凭据信息
#1.缓存的账户密码以明文形式存放在.ssh根目录.git-credentials文件内
#2.同服务器账户只能被缓存一次,如account1和account2同为github账户,即github.com的服务器地址只能被缓存一条数据
#3.若account2被缓存那么在account1使用push等命令时会提示“使用account2账户登录无权限”
git config --local credential.helper store

#清除系统\全局\项目本地的rsa对应的凭据信息
git config --system --unset credential.helper
git config --global --unset credential.helper
git config --local --unset credential.helper

#清除全局用户名\用户邮箱信息
git config --global --unset user.name
git config --global --unset user.email

19、ssh -T –验证git是否联通

1
2
#基本格式为 ssh -T 远程服务类型@远程地址(当然也可以是自定义地址Host)
ssh -T git@github.com
1
2
3
4
5
6
7
8
9
10
11
#步骤一:在.ssh文件夹内的config配置文件来配置自定义rsa,如下
Host yqnshare
User yqnshareTest
Hostname github.com
IdentityFile ~/.ssh/yqnshare_rsa

#通过自定义Host名称来代替远程地址进行访问
$ ssh -T git@yqnshare
Enter passphrase for key '/c/Users/EDZ/.ssh/yqnshare_rsa':
Hi yqnshare! You've successfully authenticated, but GitHub does not provide shell access.

用于本地测试是否能够联通远程服务器,出现以下内容则表示联通:

1
Hi ***! You've successfully authenticated, but GitHub does not provide shell access.

20、ssh-add –私钥添加至本地

1
2
3
4
5
6
7
8
9
10
11
#将不同的私钥添加到本机git环境
ssh-add ~/.ssh/id_rsa_github // 将 GitHub 私钥添加到本地
ssh-add ~/.ssh/id_rsa_gitlab // 将 GitLab 私钥添加到本地

#列出本机git环境已添加私钥情况
ssh-add -l

#如果执行添加私钥命令出现如下提示,则需要执行eval `ssh-agent`命令
Could not open a connection to your authentication agent
eval `ssh-agent`

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接,感谢各位看官!!!

本文出自:monkeyGeek

座右铭:生于忧患,死于安乐

欢迎志同道合的朋友一起交流、探讨!

monkeyGeek
#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×