Git学习记录
Git学习总结
2023/11/5 - 更新
此文用作学习总结,以方便日后复习,也希望能帮到一些初学者,不足之处还请各位大侠指正。
Git是一个开源的分布式版本控制系统,能让人们方便的进行文件管理
何为分布式
从集中式版本控制系统说起,完整的版本库集中存放在中央服务器,每次都要从中央获取最新版本,编辑完再提交至中央,存在下载资源速度慢和中央服务器一旦出现问题整个项目就会遭到巨大打击的问题,分布式版本控制系统则很好的解决了上述问题,因为每个人的电脑上都有完整的版本库,不必联网不用担心中央服务器突然失效。
为电脑注册“账号”
git config
工具
想象在一个聊天群中,每个人都没昵称的场面,更不用说在一个工作的环境中没了身份的标识,所以在安装完Git后请再做一步,设置你的name和email
1 | git config --global user.name "NAME" |
--global
参数表示当前电脑上的所有git仓库都是用这个配置,所以去掉即可对不同仓库注册不同身份
--system
对应/etc/gitconfig
--global
对应~/.gitconfig
,配置会覆盖上层的相同配置
基本流程
- 克隆仓库作为工作区
- 添加修改文件
- 过程中有别人改了,可以更新
- 提交
- 可以撤回,再次提交
创建仓库
选定或创建一个文件夹,命令行输入git init
即可将此文件夹变成一个git管理的仓库
成功创建后会生成一个.git的隐藏文件夹,使用ls -ah
命令即可看见
.git文件夹包含着所有git操作所需要的东西
三个区域
工作区:日常放文件的地方,可视
暂存区:临时存放改动的地方.get/index
本地仓库(版本库):最终存放所有版本的位置,HEAD指针指向最新的版本.git/
远程仓库:理解成另一台主机即可,什么是分布式啊!
基本命令
最最基本的,列一下跳过了
1 | git init |
进一步
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>
:逐行显示指定文件的每一行代码是由谁在什么时候引入或修改的
参考
拾遗
commit id(版本号):频繁出现的一串串由数字和abc…组成的序列
非常好游戏,爱来自瓷器Learn Git Branching
git switch
:更好的分支管理,git –version >= 2.23