前言
网络上有许多关于git的教学,全面且标准,像最近我又温习了一遍的雪峰大佬的Git操作流程,也看到一个很风趣的-连山公都懂的git,一起也有一些某站上玲琅满目的视频手把手教学,记住以前听人说过,“学好git并熟练操作,你就能够从一个员工到老板”,这话我在学校的时候还觉得奇怪,当我来到作业岗位,并在一开端对git操作半知不解的时候,旁边的搭档现已开端在敏捷用快捷方式运用git来创立分支提交兼并等一系列操作,行云流水。确实,学好git在一些作业对接上面,能够说非常便利,当然,学会git并不难,难的是对其一目了然,相信你必定能够把握这项开发范畴的必备技术,也能在以后的日常作业中轻车熟路。
必备纲要
网上介绍的git操作现已非常详细了,涵盖了简直悉数git的操作攻略,相信我再依据例子图片来逐个解说有点多此一举,所以这篇文章意在经过我自己亲身经历,总结的一些你一定会用到的,企业级开发的版别控制系统的git操作标准。
Git 小白
当然,这篇文章只是我的个人经历所写,针对的是一些还没有了解git操作或许刚刚入门的同学,假如你对git现已一目了然,能够略过此文~
那么现在开端步入正题: Git有作业区,暂存区和版别库的概念,先来看看他们的解说。
-
作业区 作业区即你在电脑上创立的一个文件夹
-
版别库 作业区有一个躲藏的目录.git,这个就是git的版别库。它里边存了许多东西,其中有一个名为“暂存区”,还有一个git为咱们主动创立的第一个分支master,以及指向master的一个指针HEAD。
作业区和版别库是一个这样的关系:
了解这个图的结构之后,这就是咱们说的“心里有数”。
脑筋风暴
接下来开端张狂API:
-
要随时把握作业区的状况,运用git status指令。
-
假如git status告诉你有文件被修改过,用git diff能够检查修改内容。
-
HEAD指向的版别就是当时版别,因此,Git答应咱们在版别的前史之间络绎,运用指令git reset –hard commit_id。
- 这儿commit_id是啥意思呢? 最简略的,直接翻译过来,提交(版别)id号码,望文生义,你每次提交对应的一个key~!和Smybol一样,独一无二。 - 怎么得到这个commit_id? git log后 例如显示了一段commit 1094ab....这一长串数字,就是咱们得到的key。别的,运用git log --pretty=oneline --abbrev-commit 能够显示简易的前史commit_id.
-
络绎前,用git log能够检查提交前史,以便确认要回退到哪个版别。(往回退)
-
要重返未来,用git reflog检查指令前史,以便确认要回到未来的哪个版别。(往未来走)
-
撤销回退场景小结:
- 场景1:当你改乱了作业区某个文件的内容,想直接丢掉作业区的修改时,用指令git checkout — file。(这个和后面切换分支不要弄糊涂了!)
- 场景2:当你不但改乱了作业区某个文件的内容,还增加到了暂存区时,想丢掉修改,分两步,第一步用指令git reset HEAD,就回到了场景1,第二步按场景1(git checkout –file)操作。
- 场景3:现已提交了不合适的修改到版别库时,想要撤销本次提交,运用版别回退,不过条件是没有推送到长途库。
-
指令git rm用于删去一个文件。假如一个文件现已被提交到版别库,那么你永久不必担心误删,可是要当心,你只能康复文件到最新版别,你会丢掉最近一次提交后你修改的内容。
-
运用分支:
- 检查分支:git branch
- 创立分支:git branch
- 切换分支:git checkout 或许git switch
- 创立+切换分支:git checkout -b 或许git switch -c
- 兼并某分支到当时分支:git merge
- 删去分支:git branch -d
-
当Git无法主动兼并分支时,就必须首要处理抵触。处理抵触后,再提交,兼并完结。处理抵触就是把Git兼并失利的文件手动修改为咱们希望的内容,再提交。用git log –graph指令能够看到分支兼并图。(这个我用的不多~)
-
兼并分支时,加上 –no-ff 参数就能够用普通模式兼并,兼并后的前史有分支,能看出来从前做过兼并,而fast forward兼并就看不出来从前做过兼并。(这个也用的不多~)
-
Bug分支
- 修正bug时,咱们会经过创立新的bug分支进行修正,然后兼并,最终删去;
- 当手头作业没有完结时,先把作业现场git stash一下,然后去修正bug,修正后,再git stash pop,回到作业现场;
- 在master分支上修正的bug,想要兼并到当时dev分支,能够用git cherry-pick 指令,把bug提交的修改“仿制”到当时分支,避免重复劳动。
-
开发一个新feature,最好新建一个分支;假如要丢掉一个没有被兼并过的分支,能够经过git branch -D 强行删去。
-
多人协作
- 检查长途库信息,运用git remote -v;本地新建的分支假如不推送到长途,对其他人就是不可见的;
- 从本地推送分支,运用git push origin branch-name,假如推送失利,先用git pull抓取长途的新提交;
- 在本地创立和长途分支对应的分支,运用git checkout -b branch-name origin/branch-name,本地和长途分支的称号最好一致;
- 建立本地分支和长途分支的相关,运用git branch –set-upstream branch-name origin/branch-name;
- 从长途抓取分支,运用git pull,假如有抵触,要先处理抵触。
-
rebase(git rebase)操作能够把本地未push的分叉提交前史整理成直线;rebase的目的是使得咱们在检查前史提交的变化时更简单,因为分叉的提交需要三方对比。
-
创立标签
- 指令 git tag 用于新建一个标签,默认为HEAD,也能够指定一个commit id;
- 指令 git tag -a -m “blablabla…”能够指定标签信息;
- 指令 git tag能够检查一切标签。
-
推送标签(暂时用的少)
- 指令 git push origin 能够推送一个本地标签;
- 指令 git push origin –tags能够推送悉数未推送过的本地标签;
- 指令 git tag -d 能够删去一个本地标签;
- 指令 git push origin :refs/tags/能够删去一个长途标签。
是不是有点头晕眼花了,咱们看一张图来快乐一下^_^
出山⛰️
到这儿,你现已能够出山了,假如在运用git的过程中,有提示过错,大可google一下,或许看过错提示,假如有任何运用过程中的bug,欢迎来评论区互相解答~