Git学习总结

2023/11/5 - 更新

此文用作学习总结,以方便日后复习,也希望能帮到一些初学者,不足之处还请各位大侠指正。

Git是一个开源的分布式版本控制系统,能让人们方便的进行文件管理

何为分布式

从集中式版本控制系统说起,完整的版本库集中存放在中央服务器,每次都要从中央获取最新版本,编辑完再提交至中央,存在下载资源速度慢和中央服务器一旦出现问题整个项目就会遭到巨大打击的问题,分布式版本控制系统则很好的解决了上述问题,因为每个人的电脑上都有完整的版本库,不必联网不用担心中央服务器突然失效。

为电脑注册“账号”


git config工具

想象在一个聊天群中,每个人都没昵称的场面,更不用说在一个工作的环境中没了身份的标识,所以在安装完Git后请再做一步,设置你的name和email

1
2
git config --global user.name "NAME"
git config --global user.email "EMAIL"

--global参数表示当前电脑上的所有git仓库都是用这个配置,所以去掉即可对不同仓库注册不同身份

--system对应/etc/gitconfig

--global对应~/.gitconfig,配置会覆盖上层的相同配置

基本流程


  • 克隆仓库作为工作区
  • 添加修改文件
  • 过程中有别人改了,可以更新
  • 提交
  • 可以撤回,再次提交

创建仓库


选定或创建一个文件夹,命令行输入git init即可将此文件夹变成一个git管理的仓库

成功创建后会生成一个.git的隐藏文件夹,使用ls -ah命令即可看见

.git文件夹包含着所有git操作所需要的东西

三个区域


工作区:日常放文件的地方,可视

暂存区:临时存放改动的地方.get/index

本地仓库(版本库):最终存放所有版本的位置,HEAD指针指向最新的版本.git/

远程仓库:理解成另一台主机即可,什么是分布式啊!

基本命令


最最基本的,列一下跳过了

1
2
3
4
5
git init
git clone
git add .
git commit -m "描述"
git status

进一步


Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比

git diff:暂存区和工作区的差异
git diff --cached:暂存区和上一次commit的差异

git reset HEAD^ # 回退所有内容到上一个版本
git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本
git reset 052e # 回退到指定版本

分支管理


可随时从master上分出branch,在branch上自由的修改而不影响主分支

git branch: 列出分支
git branch (branchname):创建分支
git branch -d (branchname):删除分支
git checkout (branchname):切换分支
git checkout -b (branchname): 创建新分支并切换到新分支下
git merge (branchname):合并branchname到当前分支

冲突处理:合并出错报Automatic merge failed; fix conflicts and then commit the result.

文件中可以直接看到冲突内容的标记,手动修改,修改完用git add告诉 Git 文件冲突已经解决重新git commit

标签


理解为助记符,不会去记62er73d3这种commit id,到重要版本时可打一个标签

git tag -a v1.0:给最新一次提交(HEAD)打上带注解的标签

查看历史


git log:显示提交历史记录

git blame <filename>:逐行显示指定文件的每一行代码是由谁在什么时候引入或修改的

参考


Gitee上的参考教程

Git 分支管理 | 菜鸟教程 (runoob.com)

拾遗


commit id(版本号):频繁出现的一串串由数字和abc…组成的序列

非常好游戏,爱来自瓷器Learn Git Branching

git switch:更好的分支管理,git –version >= 2.23