一小时Git教程(下)

Linux2025-01-16

一小时Git教程(上)
一小时Git教程(下)

10 注册github账号

GitHub · Build and ship software on a single, collaborative platform · GitHub

20250106100226

11 SSH配置和克隆仓库

gtihub创建仓库,略

git clone <仓库地址>
git clone git@github.com:linux/repo

通过ssh方式克隆仓库必须配置ssh公钥

cd ~/.ssh
ssh-keygen -t rsa -b 4096

复制 .pub 公钥文件内容到 github

20250106101743

如果自定义密钥文件名,需要添加config配置文件

~/.ssh/config
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/test  # 私钥文件

再次通过ssh地址,clone仓库

提示输入密码,创建密钥时为空的话直接回车

image-20250106103137899

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

641

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源代码管理器,文件状态图标

    20250109085938

  • 扩展:Git Graph 、Git Lens

16 分支简介和基本操作

mkdir branch-demo
git init

图片3

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分支上执行合并操作:

image-20250109110855252

可以在任意分支上执行rebase操作:

图片5

git checkout -b dev 244d3  # 恢复之前状态
                # 提交id,可以使用gie log查看
alias graph='git log --oneline --graph --decorate --all'
git reset -hard b4d93   # 恢复到某一个点

image-20250109111644333

image-20250109111732662

Merge:

  • 优点:不会破坏缘分值的提交历史,方便回溯和查看。
  • 缺点:会产生额外的提交节点,分支图复杂。

Rebase:

  • 优点:不会新增额外的提交记录,形成线性历史,比较直观干净。
  • 缺点:会改变历史提交,改变了当前分支branch out的节点,避免在共享分支使用。

19 分支管理和工作流模型

Git Flow模型:

main、hotfix、release、develop、feature_login_page、feature

image-20250109112119849

Major.Minor.Patch

git tag <版本号>

主要分支:main、dev

辅助分支:其他2中

GitHub Flow模型

image-20250109112629087

分支命名规范、分支创建规范、分支合并规范:

图片6

默认分支从Master改成main:

git branch -m master main
本文链接:https://www.orcy.net.cn/4056.html,转载请附上原文出处链接

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注