Git Note#2:Command

Git系列学习笔记基于尚硅谷Git及Github教程📒

介绍Git本地库操作,冲突处理,远程库操作;Git跨团队协作以及SSH密钥。

目录

本地库操作

查看手册

1
git help <command>

本地库初始化

初始化本地库,创建.git文件夹

1
git init 

设置签名

签名的形式是用户名+Email地址,用于区分开发人员身份,与远程库账号无关

1
2
3
4
5
6
7
#项目级别/仓库级别:仅在当前本地库范围内有效
git config user.name xxx
git config user.email xxx@xxx

#系统用户级别:登陆当前操作系统的用户范围
git config --global user.name xxx
git config --global user.email xxx@xxx
  • 就近原则,优先使用项目级别签名,不允许二者都没有

  • 系统级别签名信息可在~/.gitconfig中查看或修改

文件操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#查看工作区/暂存区状态
git status

#添加文件到暂存区
git add <file> #将指定文件添加到暂存区(之前追踪过的文件可以直接commit)
git add . #将目录所有文件添加到暂存区

#暂存区删除
git rm --cached <file>

#提交文件(若无-m参数进入vim编辑提交信息)
git commit #全局提交,将暂存区所有追踪的文件修改提交到本地库
git commit <file> #部分提交,指定提交文件
git commit -m "xxx" #直接输入提交信息

版本查看

1
2
git log #只显示过去文件版本
git reflog #显示所有版本&更多信息(包括版本移动的记录)

log命令参数

  • --pretty=online 一行格式显示

  • --oneline 一行格式显示&哈希值缩略显示

版本控制

可以找回删除的文件

1
2
3
git reset --hard <idx> #基于索引值选择目标版本
git reset --hard HEAD^<^...> #版本回退,一个^回退一步
git reset --hard HEAD~<num> #版本回退,数字代表回退步数

reset命令三个参数

  • --soft 仅在本地库移动HEAD指针
  • --mixed 在本地库移动HEAD指针,重置暂存区
  • --hard 本地库移动指针,重置缓存区,重置工作区

比较文件差异

1
2
git diff <file> #比较工作区和暂存区
git diff <pointer> <file> #比较工作区和指定历史版本
  • 不带文件名则比较多个文件

分支操作

版本控制中,使用多条线同时推进多个任务。

查看分支

1
git branch -v

创建新分支

1
git branch <name>

切换分支

1
git checkout <name>

合并分支

合并目标分支到当前分支

1
git merge <name>

*冲突处理

Git检测到冲突后会使用特殊符号在冲突文件中标识冲突信息,直接编辑冲突文件直至满意后重新addcommit后即可(commit时不能注明文件名部分提交)😐

远程库操作

推送Push

1
2
3
4
5
6
7
8
9
10
11
# 添加地址别名
git remote add <address_name> <address>

# 删除地址别名
git remote rm <adderss_name>

# 查看地址别名
git remote -v

# 推送到目标地址
git push <address_name> <branch_name>

克隆Clone

1
2
# 克隆远程库到本地(自动创建origin别名)
git clone <address>

拉取Pull

pull = fetch + merge

1
2
3
4
5
6
7
8
# 抓取(创建新branch:<address_name>/<branch_name> 保存抓取文件)
git fetch <address_name> <branch_name>

# 合并
git merge <branch_name>

# 直接拉取
git pull <address_name> <branch_name>

远程库操作冲突处理

不是基于远程库最新版做的修改,push会失败,需要先拉取。

首先pull,在本地发现冲突,同本地冲突解决方案。

跨团队协作

  • fork到自己的repository
  • 本地修改
  • 发起pull request

SSH免密

1
2
# 生成公钥
ssh-keygen -t rsa -C <email_address>
  • 在用户目录 .ssh 文件夹的 id_rsa.pub