一小时Git教程(下)
![](https://myoss.orcy.net.cn:9000/oss-gd-note-img/202309112050098.png)
10 注册github账号
GitHub · Build and ship software on a single, collaborative platform · GitHub
11 SSH配置和克隆仓库
gtihub创建仓库,略
git clone <仓库地址>
git clone git@github.com:linux/repo
通过ssh方式克隆仓库必须配置ssh公钥
cd ~/.ssh
ssh-keygen -t rsa -b 4096
复制 .pub 公钥文件内容到 github
如果自定义密钥文件名,需要添加config配置文件
~/.ssh/config
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/test # 私钥文件
再次通过ssh地址,clone仓库
提示输入密码,创建密钥时为空的话直接回车
git push <remote> <branch>
git pull <remote>
12 关联本地仓库和远程仓库
- 本地仓库
- 远程仓库:github创建first-repo
git remote add <shortname> <url>
#
git remote add origin git@gielab.com:XXX/XXX.git
origin:别名,默认为origin
#
git remote -v
指定分支名称:
git brach -M main # 默认是main,可以省略
git push -u origin main:main
# 远程仓库别名
# 本地仓库分支和远程仓库相同,可以写一个main
git push -u origin main # 本地main分支关联远程main分支
git pull <远程仓库名> <远程分支名>:<本地分支名>
#
git pull origin main:main # 默认为main,可以省略
git pull 自动合并,有冲突合并失败,需要手动解决
git fetch 不会自动合并,需手动合并
13 Gitee的使用和gitlab本地化部署
- gitee.com 国内平台
- gitlab 私有化部署
注册、创建仓库、添加密钥和github类似。因gitlab地域限制问题,不推荐继续使用gitlab
14 GUI工具
https://git-scm.com/downloads/guis
- Github Desktop:简洁单一,只能管理github上的仓库,与github整合较好
- SourceTree
- Gitkraken:商用(免费版/付费版)
15 vscode中使用git
-
Ctrl + Shift + P — Path — "在PATH中安装code命令",配置完成后,在终端输入 code. 启动vscode
-
vscode源代码管理器,文件状态图标
-
扩展:Git Graph 、Git Lens
16 分支简介和基本操作
mkdir branch-demo
git init
git branch # 查看仓库所有分支
*main
# *号,目前所在分支
git branch dev # 创建dev分支,但不会切换到这个分支
git checkout dev # 切换到不同的分支
git switch main # 专门切换分支的命令
注:(1)git checkout 切换分支、恢复文件,当分支名和文件名相同,出现问题,默认切换分支而不是恢复文件
(2)切换分支工作区文件也会变化
(3)不同分支文件在同一个目录下,切换分支时,会出现文件变化
git merge dev # 合并dev分支到当前分支
git log --graph --oneline --decorate --all # 显示分支合并状态
分支合并后,也会存在除非手动删除
git branch -d dev # 删除已经合并的dev分支
gitbranch -D dev # 强制删除未合并的dev分支
保证分支的顺畅和有效,指定明确的分支管理流程和规范,加强分支保护和权限控制。
17 解决合并冲突(conflict)
git commit -a -m "feat:1" # 一次完成添加暂存和提交两个动作
git branch feat # 创建新分支feat
git switch feat
# 创建文件main1.txt 写入内容 feat
git switch main
# 创建文件main1.txt 写入内容 main
git merge feat # 合并feat分支到当前main分支
产生冲突:conflicts
git status # 查看冲突文件列表
git diff # 查看冲突内容
vi main1.txt
# 手工编辑文件
git add .
git commit -m "merge conflicts"
git merge --abort
# 终止合并
18 回退和rebase
Rebase 变基
git rebase <branch-name>
在main分支上执行合并操作:
可以在任意分支上执行rebase操作:
git checkout -b dev 244d3 # 恢复之前状态
# 提交id,可以使用gie log查看
alias graph='git log --oneline --graph --decorate --all'
git reset -hard b4d93 # 恢复到某一个点
Merge:
- 优点:不会破坏缘分值的提交历史,方便回溯和查看。
- 缺点:会产生额外的提交节点,分支图复杂。
Rebase:
- 优点:不会新增额外的提交记录,形成线性历史,比较直观干净。
- 缺点:会改变历史提交,改变了当前分支branch out的节点,避免在共享分支使用。
19 分支管理和工作流模型
Git Flow模型:
main、hotfix、release、develop、feature_login_page、feature
Major.Minor.Patch
git tag <版本号>
主要分支:main、dev
辅助分支:其他2中
GitHub Flow模型
分支命名规范、分支创建规范、分支合并规范:
默认分支从Master改成main:
git branch -m master main
发表评论