Git命令整理

Git命令整理

1. 配置全局用户和邮箱/生成公钥

a 配置全局用户

git config --golabl user.name “Your Name"

b 配置全局邮箱

git config --global user.email “Your Name”

c 查看配置

git config –list

d 查看全局配置

git config – global –list

e 生成公钥

ssh-keygen –t rsa –C ‘注释’

f 查看公钥

​ 公钥存放的默认相对路径为 .ssh文件夹下的id_rsa.pub 文件

​ linux : cat ~/.ssh/id_rsa.pub

​ windows : C:\Users\user\.ssh\id_rsa.pub

2. Git 仓库

注: url地址形式为:https://gitee.com/xxx/xxx.git 或者 git@gitee.com:xxx/xxx.git

a 克隆仓库 :

git clone url Git服务器已配置好本机公钥,或者本机已使用用户名密码登录Git,可使用此命令直接克隆。如果没有,可使用以下命令克隆 : git clone http://user:pwd@url(使用用户名和密码)

b 初始化本地仓库 git init

c 关联远端仓库

  • 添加远端仓库 git remote add origin url
  • 拉取远端仓库代码 git pull origin master(git pull <remote> <branchname> )
  • 查看当前远端仓库 git remote -v
  • 修改远端仓库地址 git remote set-url origin <remote-url>
  • 删除远端仓库 git remote rm origin

d 查看当前仓库状态 git status

3. 分支

a 创建分支

git branch <branchname>
​ 推送到远端 git push origin <branchname>

​ 有可能没有远端库创建分支的权限,导致推送失败,报403错误

b 查看分支

git branch

查看本地和远程分支

git branch -a

c 切换分支

git checkout <branchname>

​ 创建并切换分支 git checkout -b <branchname>

d 合并分支

git merge <branchname>

​ 合并指定分支到当前分支

e 拉取远端仓库指定分支代码到当前分支

git pull <remote> <branchname>

​ 远端仓库的默认名称为 origin,默认分支为master :git pull origin master

f 删除本地分支

git branch -d <branchname>

​ 推送到远端,删除远端分支 git push origin :<branchname>

g 删除远端分支

git push origin -d <branchname>

​ 注意:此命令只删除远端仓库的分支,本地仍然存在

4. Tag

a 创建tag

git tag -a <tagname> -m '注释'

​ 推送到远端仓库 git push origin <tagname>

​ 推送所有本地标签到远端仓库 git push origin --tags

b 追加创建tag到指定提交

git tag -a <tagname> -m'注释' <cimmitID>

​ tagname :tag名称

​ cimmitID:提交记录id,可截取一部分,只要保证唯一性即可,一般可取前7位。

c 显示本地tag列表 git tag

​ 模糊搜索本地tag列表 git tag -l <tagname>

搜索 1.4.2 系列的标签
$ git tag -l 'v1.4.2.*'
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4

d 显示远端tag列表

git ls-remote -t 或 git ls-remote --tags

$ git ls-remote -t
From https://github.com/master-dev.git
6651fdd202db5b6635189889ad64c0f704b689f9        refs/tags/V1.6.10
186de87fc31f5e27e9b8da19c0ea164fef8cc16a        refs/tags/V1.6.10^{}
ee58f63083ac42bfba815cecb618270d64450d7d        refs/tags/V1.6_6.2
249d342aa594540ceee2965ad95eab25b480d88b        refs/tags/V1.6_6.2^{}

e 获取远端仓库中的引用

 `	git ls-remote [--heads] [--tags] [--refs]		 -h  --heads  -t  --tags  `
$ git ls-remote
From https://github.com/master-dev.git
b12cc667a3ff7a0e4f2842966a1435e173b1cac2        HEAD
b12cc667a3ff7a0e4f2842966a1435e173b1cac2        refs/heads/master
620e689691e00ab5931dabf1dee0e03c76d435ae        refs/hidden/Tag-tag-cb-backup         ea9673c8d24e7f2fc185087c6035835a929d78d3        refs/hidden/Tag-tag-cb-backup^{}
d5a4304aea3d386de8153d48b12a77676649e33f        refs/remotes/cb-last-merged-abc-master/master
16cb58856c0c1dfd46631dfdefeb70ab3882c34d        refs/tags/V1.6_6.3
24ad37f1205ef18dc7014d4478557c4a99b3e3eb        refs/tags/V1.6_6.3^{}
e68f74c570e0b47a337566d29281ff4e93180cf5        refs/tags/V1.6_6.4_9
69fad4aa1fa5413a6c5e040033a62f1de0a678b1        refs/tags/V1.6_6.4_9^{}

HEAD : 表示远端仓库中当前的指针
refs/heads/:表示远端仓库中当前指针指向的分支
refs/hidden/:表示远端库中已删除或隐藏的 branch、tag、fork
refs/remotes/:表示远端仓库中的 branch、fork
refs/tags/:表示远端仓库中的 tag
$ git ls-remote --refs
From https://github.com/master-dev.git
b12cc667a3ff7a0e4f2842966a1435e173b1cac2        refs/heads/master
620e689691e00ab5931dabf1dee0e03c76d435ae        refs/hidden/Tag-tag-cb-backup
d5a4304aea3d386de8153d48b12a77676649e33f        refs/remotes/cb-last-merged-abc-master/master
16cb58856c0c1dfd46631dfdefeb70ab3882c34d        refs/tags/V1.6_6.3
e68f74c570e0b47a337566d29281ff4e93180cf5        refs/tags/V1.6_6.4
对比两个命令可以看出:$ git ls-remote --refs 命令返回信息中剥离了 Head ,tag剥离了重复的信息

f 显示单个 tag 信息

git show <tagname>

g 验证 tag

git tag -v <tagname>

h 删除本地 tag

git tag -d <tagname>

i 删除远程仓库中指定 tag

git push origin :refs/tags/<tagname>

​ 或 git push origin -d <tagname> (同删除远端分支命令相同)

​ 注意:以上命令只删除远端仓库的 tag,本地仓库仍然存在

5. File

注意:git 的版本控制管理针对的是文件,不针对文件夹,因此 git 不允许提交一个空的目录到版本库上。

windows 系统的文件名称大小写不敏感,但 git 的文件名称大小写敏感。当 git 仓库在 windows 系统上 ,如果只修改文件名的大小写,git 中可检查出文件名称进行了修改且可提交并push,但实际的文件名称并未修改,因此修改后的文件名也并不能同步到远端仓库。只能先修改为其他名称,提交并push,之后再改成正确的名称,提交并push,本次修改才算成功。

a git add 有新增文件时,需要使用此命令,将新增文件登记到 index 区,纳入 git 管理。已经登记的文件,此命令则会将文件的修改或删除添加至 index 区。对于已经登记的文件,也可直接使用 commit ,add不是必须的。

  • git add <filename> 将文件的变化添加至 index 区(新增、修改、删除)

  • git add -A 将当前路径下所有文件的变化添加至暂存区

  • git add -u 将当前路径下所有修改(modified)和删除(deleted)文件,不包括新文件(new)添加至暂存区

  • git add . 将当前路径下所有新文件(new)和修改(modified)文件,不包括被删除(deleted)文件添加至暂存区

b git commit 将 index 区内容添加到本地仓库

  • git commit -m '备注信息' 将 index 区内容添加到本地仓库

  • git commit -a -m '备注信息' 修改和删除的文件不需要执行 git add 命令,直接提交

  • git commit [file1] [file2] ... -m [message]将 index 区的指定文件提交当本地仓库

c git push 将本地分支的更新推送到远端仓库

  • git push <remote> <branchname> 将本地的 branchname 分支推送到 remote 主机的 branchname 分支,如果 branchname 不存在,则会被新建。一般实际执行的命令为: git push origin master

  • git push <remote> :<branchname> 删除指定的远端分支。

    例: git push origin :master 等同于 git push origin --delete master

    注意:branch 的推送、删除操作与 tag 的推送删除操作类似

  • git push origin 将当前分支推送到 origin 主机的对应分支。当前分支与远程分支存在追踪关系,可忽略本地分支和远程分支,使用此命令

  • git push 当前分支只有一个追踪分支时,主机名都可省略,使用此命令

    注意:如果当前分支与多个主机存在追踪关系,则要先执行以下命令:git push -u origin master ,指定默认主机,然后才可不带任何参数使用 git push 命令

e git log 获取提交记录,按时间倒序

注意:log 信息较多时,窗口显示不全,按下箭头或 Enter 键可往下查看 ,按 Q 键结束当前命令(或 CTRL + C 中断当前进程)

  • git log -5 显示前 5 条提交,可以指定任意条数
  • git log --skip=5 跳过前 5 条提交
  • git log -p 提交中增加文件差异对比信息(diff)
  • git log --oneline 显示简化信息/--stat 显示统计信息/--author 按用户过滤/--after 指定日期之后/ --before 指定日期之前/--merges 显示merge/--no-merges 不显示merge

f git show 用于显示各种类型的对象

  • git show <commitId> 显示指定提交的详细信息
  • git show <tagname> 显示指定 tag 的详细信息
  • git show <branch> 显示指定分支的详细信息

6. git pull = git fecth + git merge

  • git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并,它的完整格式稍稍有点复杂。

  • 更准确地说,git pull使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。 使用--rebase,它运行git rebase而不是git merge

  • 完整格式:git pull <远程主机名> <远程分支名>:<本地分支名>

    例:git pull origin next:master 拉取origin主机的next分支,与本地的master分支合并

  • git pull origin 如果当前分支与远程分支存在追踪关系,可省略分支名,使用此命令

  • git pull 如果当前分支有唯一追踪分支,连远程主机名都可以省略,使用此命令

a git fetch和git pull的区别

  • git fetch:相当于是从远程获取最新版本到本地,不会自动合并。

$ git fetch origin master
$ git log -p master..origin/master
$ git merge origin/master

以上命令的含义:

  • 首先从远程的originmaster主分支下载最新的版本到origin/master分支上
  • 然后比较本地的master分支和origin/master分支的差别
  • 最后进行合并

注意: 在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。

b 解决冲突 conflict

1、 git commit  ->  git push  失败,发生冲突
2、 git pull 拉取远程代码,打开冲突文件,手动合并冲突代码。(<<<<  >>>>> 表示冲突所在的位置,<<<<Head 与 ==== 之间表示本地的修改,==== 与 >>>>>afigkg556465 之间表示远程的修改,须手动合并)
3、 git add -u 把所有以 track 的文件的新的修改加入 index 区,但不加入新的文件
4、 git merge/rebase --continue 继续合并/变基,有冲突继续解决,重复以上步骤,直至合并/变基完成。
5、 git commit  ->  git push 成功!
posted @ 2021-07-20 18:06  来一杯coffee  阅读(91)  评论(0)    收藏  举报