前言
嗨喽,大家好,我是CrazyCodes, 今天我们结合日常碰到的工作场景来讲解GIT,文末附有精美流程图,需要请自取。
历史
从古至今,无论学个什么东西,都要先得聊聊其发源地。
Git 是一个开源的分布式版本控制系统,是Linux之父Linus为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
GitHub 基于Git开发的软件项目托管平台。
GitLab 也是基于Git开发的软件项目托管平台,但其是开源的。
基本知识
git clone && git init
本地初始化一个Git仓库
与从远程拉取到本地一个Git仓库,本质上没有区别,在远程拉取仓库也需要先在远程建立仓库,其命令依旧是git init
git目录
切换分支
.git/HEAD 用于记录当前所在分支,使用 git checkout branchName 是直接修改该文件
ref: refs/heads/master
某个分支的当前提交
.git/refs/heads
e6caa5bbcd4d362d3a5bac6b5a3417c15991484c
类似的查看某个标签的当前提交 .git/refs/tags
e6caa5bbcd4d362d3a5bac6b5a3417c15991484c
暂存区
git add filename 该动作内容保存在 .git/index 文件中
日志
.git/logs 保存所有日志 ,使用 git log 会查询该文件
常用命令
- git add
- git commit
- git merge
- git checkout
- git diff
- git status
- git log
学习平台
https://learngitbranching.js.org/?NODEMO=&locale=zh_CN
应用场景
git blame 找出“真凶”
git blame filename
git checkout 回滚文件
git checkout filename
git add 如何取消
git reset HEAD filename
git commit 如何取消
git reset --soft HEAD~1
// 重新修改commit信息
git commit --amend
git merge 如何取消
git merge --abort
不要盲目使用git add .
git status
// 在将文件添加到缓存区之前,请一定、一定、一定先git diff 下
git diff
// 检查所有修改都是想add的,如果所有修改都是的话,可以使用 git add . 除此之外还请慎重呀!
git add . || git add filename1 filename2
git rebase 变基 ==“换爹”?
git rebase branch
git cherry-pick 不动声色的“偷代码”
git cherry-pick hashcommit|branchname
加塞任务如何处理
git stash
git stash apply|pop
git list
实战开始
Step.1
首先当你收到一份新的代码后,先进行clone(上面有讲过)。随后呢,你需要建立一个自己的分支去开发你需要做的事情,如下图所示
Step.2
当你完成了一项功能后,你需要将开发的文件加入到暂存区并且准备将代码提交到代码库中,这时你需要执行 git add
Step.3
突然,你发现你手抖了一下,误添加了一个文件,不要慌,这时你可以使用git reset把这个文件从暂存区踢出去。
Step.4
当你确认add的文件全部是你想add的文件时,就可以选择commit提交文件了
Step.5
当然也有后悔的机会,在你commit后,想撤回怎么办呢?你依旧可以使用万能的git reset命令把你的commit撤回。
Step.6
确认commit没有问题后,你需要将你分支的代码合并到你们的主线分支或者开发分支,提交到服务器进行测试。
当然,你依旧有反悔的机会(在合并阶段)直接撤销合并
最后,根据上述描述的场景奉上完整的流程图!
致谢
感谢你看到这里,希望本篇文章可以帮助到你,谢谢!
原创文章,作者:CrazyCodes,如若转载,请注明出处:https://blog.fastrun.cn/2021/12/26/1-106/