9

image.png

前言

嗨喽,大家好,我是CrazyCodes, 今天我们结合日常碰到的工作场景来讲解GIT,文末附有精美流程图,需要请自取。

历史

从古至今,无论学个什么东西,都要先得聊聊其发源地。

Git 是一个开源的分布式版本控制系统,是Linux之父Linus为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
image.png
GitHub 基于Git开发的软件项目托管平台。
image.png
GitLab 也是基于Git开发的软件项目托管平台,但其是开源的。

基本知识

git clone && git init

本地初始化一个Git仓库
image.png
与从远程拉取到本地一个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....

应用场景

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(上面有讲过)。随后呢,你需要建立一个自己的分支去开发你需要做的事情,如下图所示
image.png

Step.2

当你完成了一项功能后,你需要将开发的文件加入到暂存区并且准备将代码提交到代码库中,这时你需要执行 git add
image.png

Step.3

突然,你发现你手抖了一下,误添加了一个文件,不要慌,这时你可以使用git reset把这个文件从暂存区踢出去。
image.png

Step.4

当你确认add的文件全部是你想add的文件时,就可以选择commit提交文件了
image.png

Step.5

当然也有后悔的机会,在你commit后,想撤回怎么办呢?你依旧可以使用万能的git reset命令把你的commit撤回。
image.png

Step.6

确认commit没有问题后,你需要将你分支的代码合并到你们的主线分支或者开发分支,提交到服务器进行测试。
image.png
当然,你依旧有反悔的机会(在合并阶段)直接撤销合并
image.png

最后,根据上述描述的场景奉上完整的流程图!
image.png

致谢

感谢你看到这里,希望本篇文章可以帮助到你,谢谢!
图怪兽_aca660f7aa40e1eb9fb2ce7d8b804a59_89437.jpg


CrazyCodes
16.9k 声望14.8k 粉丝

I am CrazyCodes,生命不息,编码不止。