Git快速上手指北


Git基础使用

用户信息配置

# 设置自己的用户名和邮件地址 将用于记录谁操作了仓库
git config --global user.name "Asuhe"
git config --global user.email "[email protected]"

配置信息检查

通过 git config —global user.name 和 git config —global user.email 配置的用户名和邮箱地址,会被写 入到 C:/Users/用户名文件夹/.gitconfig文件中。这个文件是Git 的全局配置文件,配置一次即可永久生效。

# 查看所有的全局配置
git config --list --global

# 查看指定的全局配置项
git config user.name
git config user.email

获取帮助

# 获取 config 命令的帮助手册,将会打开网页
git help config

# 获取 config 命令的快速参考手册
git config -h

创建仓库

在想要创建仓库的目录下启动 git 然后将文件跟踪提交即可在本地创建 git 仓库

# 初始化仓库
git init
# 简要的显示文件状态
git status -s | --short


# 跟踪会将文件放到暂存区
# 跟踪单个文件
git add 文件名
# 跟踪目录下所有文件
git add .

# 提交文件,将会提交所有在暂存区的文件
git commit -m "更新描述"

# 回滚,即将git仓库中文件版覆盖现有的文件版本
git checkout -- 文件名

# 将文件从暂存区移出
git reset HEAD 文件名

# 强制提交所有已跟踪文件,跳过暂存阶段
git commit -a -m "更新描述"

# 同时从git仓库和工作区中删除文件
git rm -f 文件名

# 仅删除git仓库中的文件
git rm --cached 文件名

忽略文件

可以将不想提交的文件设置为忽略,这样文件就不会被 git 跟踪

创建一个名为.gitignore的配置文件,列出要忽略的文件的匹配模式。 文件 .gitignore 的格式规范如下:

① 以# 开头的是注释 ② 以/结尾的是目录 ③ 以/开头防止递归 ④ 以!开头表示取反 ⑤ 可以使用glob 模式进行文件和文件夹的匹配(glob 指简化了的正则表达式)

所谓的glob 模式是指简化了的正则表达式: ① 星号* 匹配零个或多个任意字符 ② [abc] 匹配任何一个列在方括号中的字符(此案例匹配一个a或匹配一个b 或匹配一个c) ③ 问号?只匹配一个任意字符 ④ 在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9] 表示匹配 所有0 到9 的数字) ⑤ 两个星号 ** 表示匹配任意中间目录(比如a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)

# 忽略所有的.a文件
*.a

# 跟踪所有的lib.a,即使前面设置了忽略.a文件
!lib.a

# 忽略当前目录下的TODO文件,而不忽略子目录下的TODO
/TODO

# 忽略任何目录下名为build的文件夹
build/

# 忽略doc/下的txt文件,但不忽略其子目录下的txt文件
doc/*.txt

# 忽略doc/目录及其所有子目录下的.pdf文件
doc/**/*.pdf

查看操作日志

# 按时间降序列出提交历史
git log

# 显示最近两条提交历史
git log -2

# 一行展示最近两条提交历史
git log -2 --pretty=oneline

# 自定义提交历史输出格式
# %h 提交的简写哈希值 %an作者名字 %ar作者修改日期 %s更新描述
git log -2 ---pretty=format:"%h | %an | %ar | %s"

回滚至指定版本

# 回滚至指定ID的版本
git reset --hard <CommitID>

# 

将本地仓库推送至GitHub仓库

基于HTTPS

# 关联远程仓库
git remote add origin 远程仓库的地址
# 首次推送初始化
git push -u origin master

基于SSH

# 生成密钥对
ssh-keygen -t rsa -b 4096 -C "github账号的邮箱"
# 连续敲击 3 次回车,即可在 C:\Users\用户名文件夹\.ssh目录中生成id_rsa 和 id_rsa.pub 两个文件
# 复制id_rsa.pub的内容
# 在GitHub账号中添加公钥 Settings -> SSH and GPG Keys -> New SSH key
# 测试是否添加成功
ssh -T [email protected]

# 初始化操作类似HTTPS

分支操作

# 查看当前git仓库中的所有分支
git branch

# 创建分支
git branch 分支名

# 切换分支
git checkout 分支名

# 创建分支并切换到上面
git checkout -b 分支名

# 合并分支
git merge 分支名

# 删除分支
git branch -d 分支名

# 推送分支至远程仓库,仅第一次推送时要带-u参数
git push -u 远程仓库别名(默认origin) 本地分支名称:远程分支名称

# 实例
git push -u origin payment:pay # 若不填写远程分支名称,远程分支名称将与本地分支一致

# 查看远程仓库分支信息
git remote show 远程仓库名

# 下载远程分支,本地分支名称默认与远程分支一致
git checkout 远程分支名称

# 从远程仓库把远程分支下载至本地,并对下载至本地的分支重命名
git checkout -b 本地分支名称 远程仓库名:远程分支名称
# 实例
git checkout -b payment origin/pay

# 拉取当前分支中的远程分支代码
git pull

# 删除指定远程分支
git push 远程仓库名称 --delete 远程分支名称

# 实例
git push origin --delete pay