likes
comments
collection
share

你必须要知道的Git-老板法则

作者站长头像
站长
· 阅读数 2

前言

网络上有很多关于git的教学,全面且规范,像最近我又温习了一遍的雪峰大佬的Git操作流程,也看到一个很有趣的-连猴子都懂的git,同时也有一些某站上玲琅满目的视频手把手教学,记得以前听人说过,“学好git并熟练操作,你就可以从一个员工到老板”,这话我在学校的时候还觉得奇怪,当我来到工作岗位,并在一开始对git操作半知不解的时候,旁边的同事已经开始在迅速用快捷方式使用git来创建分支提交合并等一系列操作,行云流水。确实,学好git在一些工作对接上面,可以说非常方便,当然,学会git并不难,难的是对其了如指掌,相信你肯定可以掌握这项开发领域的必备技能,也能在以后的日常工作中轻车熟路。

必备纲领

网上介绍的git操作已经十分详细了,涵盖了几乎全部git的操作指南,相信我再根据例子图片来一一解释有点多此一举,所以这篇文章意在通过我自己亲身经历,总结的一些你一定会用到的,企业级开发的版本控制系统的git操作规范。

Git 小白🥬

当然,这篇文章只是我的个人经历所写,针对的是一些还没有熟悉git操作或者刚刚入门的同学,如果你对git已经了如指掌,可以略过此文~

那么现在开始步入正题: Git有工作区,暂存区和版本库的概念,先来看看他们的解释。

  • 工作区 工作区即你在电脑上创建的一个文件夹

  • 版本库 工作区有一个隐藏的目录.git,这个就是git的版本库。它里面存了很多东西,其中有一个名为“暂存区”,还有一个git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD。

工作区和版本库是一个这样的关系:

你必须要知道的Git-老板法则

了解这个图的结构之后,这就是咱们说的“心里有数”。

头脑风暴🧠

接下来开始疯狂API:

  1. 要随时掌握工作区的状态,使用git status命令。

  2. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

  3. 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.
    
  4. 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。(往回退)

  5. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。(往未来走)

  6. 撤销回退场景小结:

    • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。(这个和后面切换分支不要弄糊涂了!)
    • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD,就回到了场景1,第二步按场景1(git checkout --file)操作。
    • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,使用版本回退,不过前提是没有推送到远程库。
  7. 命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

  8. 使用分支:

    • 查看分支:git branch
    • 创建分支:git branch
    • 切换分支:git checkout 或者git switch
    • 创建+切换分支:git checkout -b 或者git switch -c
    • 合并某分支到当前分支:git merge
    • 删除分支:git branch -d
  9. 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用git log --graph命令可以看到分支合并图。(这个我用的不多~)

  10. 合并分支时,加上 --no-ff 参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。(这个也用的不多~)

  11. Bug分支

    • 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
    • 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;
    • 在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
  12. 开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

  13. 多人协作

    • 查看远程库信息,使用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,如果有冲突,要先处理冲突。
  14. rebase(git rebase)操作可以把本地未push的分叉提交历史整理成直线;rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

  15. 创建标签

    • 命令 git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
    • 命令 git tag -a -m "blablabla..."可以指定标签信息;
    • 命令 git tag可以查看所有标签。
  16. 推送标签(暂时用的少)

    • 命令 git push origin 可以推送一个本地标签;
    • 命令 git push origin --tags可以推送全部未推送过的本地标签;
    • 命令 git tag -d 可以删除一个本地标签;
    • 命令 git push origin :refs/tags/可以删除一个远程标签。

是不是有点头晕眼花了,咱们看一张图来快乐一下^_^

你必须要知道的Git-老板法则

出山⛰️

到这里,你已经可以出山了,如果在使用git的过程中,有提示错误,大可google一下,或者看错误提示,如果有任何使用过程中的bug,欢迎来评论区互相解答~