美文网首页
笔记:git命令大汇总+关键命令理解

笔记:git命令大汇总+关键命令理解

作者: GDCoder | 来源:发表于2021-04-30 15:30 被阅读0次

    前言:

    git是用起来很简单,有时候遇到特殊情况,忘记了哪个命令总不免查找一番,这里做一个统计,以便用时查看

    首先前面我不会去按顺序介绍git,比如简介、安装等等.前面我会直接介绍创建版本、版本回退、删除等等操作,因为我相信大家都是熟悉git,如果兴趣的的可以看看博客后面的,简介、诞生、等等一些知识点,话不多说,马上开始

    基本的linux命令学习

    1.  cd :改变目录

    2.  cd.. :回到上一个目录,直接cd进入默认的目录

    3.  pwd :显示当前所在的目录路径

    4.  ls : 查看当前目录中的所有文件

    5.  touch :新建一个文件如 touch index.js 就会在当前目录下新建一个index.js文件

    6.  rm :删除一个文件,比如rm index.js就会把index.js文件删除

    7.  mkdir :新建一个目录,就是新建一个目录文件夹

    8.  rm -r :删除一个文件夹,rm-r src就是删除src目录

    9.  mv :移动文件,mv index.js src , index.js就是我们要移动的文件,src是目标文件夹,当然这样写必须在同一个目录下

    10. reset :重新初始化终端/清屏

    11. clear :清屏

    12. history :查看命令历史

    13. help :帮助

    14. exit :退出

    15  # :表示注释

    git config配置信息

    1.git config --local -l :查看仓库的config配置信息

    2.git config --global -l :查看全局级的config

    3.git config --system -l :查看系统级的config

    4.git config -l :查看当前生效的配置

    5.git config -e :编辑仓库级文件

    6.git config --global -e :编辑全局区文件

    7.git config --system -e :编辑系统级文件

    8.git config --global user.name "gd":配置用户名

    9.git config --global user.email 1084493818@qq.com  :配置邮箱

    对于git来说,配置文件的权重是仓库>全局>系统

    创建本地版本仓库

    1.git init :创建一个本地空的仓库

    2.git add test.txt :将test.txt文件添加到暂存区

    3.git add . :将所有文件添加到暂存区

    4.git commit -m "note" :note是备注说明,是将暂存区的文件提交到本地仓库

    本地仓库版本回退

    1.git log :查看版本的历史记录(也可以查看每个id,做版本回退)

    2.git log --pretty=oneline :精简的查看版本的历史记录

    3.git reset --hard HEAD^ :(HEAD^代表上一个版本,上上一个版本就是HEAD^^,往上50版本就是HEAD~50)表示回退上一个版本.

    4.git reset --hard id :id代表是已经提交过的id(id位数较长,你也可以取前5位或者更多)回退到那个id版本

    5.git reflog :查看你每一次提交的命令(比如你现在是回退的版本,你想再去最新版本就可以用这个查id,再回退)

    6.git status :查看当前的文件的状态

    7.git diff HEAD --test.txt :查看工作区和最新版本库里面的区别

    8.git diff branch1 branch2:比较2个分支的差异性

    9.git checkout -- test.txt :让test.txt回到最近一次git commit或git add时的状态。

    10.git reset HEAD test.txt :把暂存区的修改撤销掉(unstage),就是把你的git add撤销掉 (git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。)

    11.git rm test.txt :从版本库中删除文件

    12.git restore --staged test.txt :从缓存区恢复到工作区

    13.git commit -a -m ‘提交信息’:直接将工作区需要提交的代码直接全部提交到本地仓库

    远程仓库管理

    1.git remote add origin address:(把address替换你远程仓库地址)把本地仓库关联到远程仓库,并把内容推到远程仓库

    2.git push -u origin master :把本地仓库内容推到远程仓库内容(-u是设置关联,以后再推送就可以简化,可以省略-u)

    3.git remote -v :查看远程库的信息

    4.git clone address :(把address替换你远程仓库地址)把远程仓库的内容克隆到自己本地仓库

    5.git pull :合并远程最新的代码

    6. git branch --set-upstream-to <branch-name> origin/<branch-name> :创建本地分支和远程分支的链接关系

    7.git pull origin master --allow-unrelated-histories   :合并远程最新的代码(允许合并无关的历史)

    8.git fetch :是将远程主机的最新内容拉到本地仓库,用户在检查了以后决定是否合并到工作本机分支中

    9.git pull = git fetch + git merge

    10.git remote rm origin: 移除远程配置(当你远程地址想换,或者配置错了时使用)

    11.git push --set-upstream origin dev (dev为创建分支的名字,建立本地到远端仓库的链接 --这样代码才能提交上去)

    分支的创建与合并

    1.git checkout -b dev :创建dev分支,并且切换到dev分支

    2.git branch :查看当前分支

    3.git checkout master :把分支切换到master

    4.git merge dev :把dev分支合并到master分支

    5.git branch -d dev :删除dev分支

    6.git switch -c dev :创建并切换到新的dev分支(和1一样效果)

    7.git switch master:把分支切换到master(和3效果差不多)

    8.git log --graph :查看分支合并图

    9.git merge --no-ff -m "merge with no-ff" dev :合并dev分支(--no-ff参数,表示禁用Fast forward)

    10.git branch -D name :删除一个没有被合并的分支

    11.git rebase :把分叉的提交历史“整理”成一条直线

    12.git checkout -b dev origin/dev:本地创建分支dev,并拉取远程的dev内容到本地dev中,本地自动切换到该分支

    13.git fetch origin master:dev:在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支

    标签

    1.git tag name :创建一个标签(name就是标签名字)

    2.git tag :查看所有标签

    3.git show tagname :查看某个标签的详细信息(tagname是标签名)

    4.git tag -a v0.1-m"note"1094adb :给某个标签添加说明(v0.1 是标签名 note是说明)

    5.git tag -d v0.1 :删除标签

    6.git push origin tagname :把tagname标签推到远程

    7.git push origin --tags :推送全部未推送过的本地标签

    8.git push origin :refs/tags/tagname :删除一个远程标签(tagname是标签名字)

    好上面基本上是覆盖了我们要用到的git命令,下面的内容是介绍一些概念、比如解决冲突,多人协作,rabase等等.

    git诞生

    (这个还是有必要了解一下,这样我们和别人吹水的时候,能够插上那么几句😄)

    林纳斯·本纳第克特·托瓦兹

    对,这就是现在的林纳斯·本纳第克特·托瓦兹,他喜欢在演讲中骂脏话,还有竖拇指!大佬就是大佬,如此牛逼不说,发量还是如此之多!

    很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

    事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

    安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

    Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

    Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

    Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

    历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

    工作区域:

    Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。

    Workspace:工作区,就是你平时存放项目代码的地方

    Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

    Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

    Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

    接下来我们看一下工作流程是怎么样的,我觉得下面这张图比较形象,如下

    这样我们来验证一下每一个流程

    git add -u <==> git add –update (提交所有被删除和修改的文件到数据暂存区),首先四个工作区域上面的流程即(git add 、git commit、git push、git commit -a、git pull)我相信大家都是用得非常熟悉,我们接下来说一下其他的

    git fetch

    为什么说即git pull 是 git fetch 和 git merge 的两步的和。首先要特别注意的一点是 fetch 抓取到新的远程跟踪分支时,本地的工作区(workspace)不会自动生成一份可编辑的副本,抓取结果是直接送到版本库(Repository)中

    所以,如果我们git fetch之后发现我们确实是落后了版本,这时候我们就可以创建一个新的$ git checkout -b test origin/master(假设是test分支),这个时候我们切换到test分支就是和远程代码一摸一样,而切换到master分支就是我们之前的代码,这样我们就可以使用git diff master test比较分支差异,再合并即可.直接演示操作如下:

    git checkout -- 

    git checkout -- file 这里是分成2中情况

    1.一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    2.一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    下面是截图操作,分别对应上面的2种情况

    没有放到缓存区的情况 放在缓存区又修改了情况

    所以上面的2个红色里面的和我实际操作的还是有点出入,我个人感觉上面红色的git checkout HEAD是有点问题,如有知道的,大佬可以指正一下

    标签管理

    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

    Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

    然后,敲命令git tag <name>就可以打一个新标签:git tag <tagname>

    可以用命令git tag查看所有标签:git tag

    如果标签打错了,也可以删除:git tag -d <tagname>

    因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

    如果要推送某个标签到远程,使用命令git push origin <tagname>

    一次性推送全部尚未推送到远程的本地标签:git push origin --tags

    从远程删除。删除命令也是push,但是格式如下: git push origin:refs/tags/<tagname>


    接下来我会继续努力编写其他博客,您的支持就是我最大的动力!

    如果觉得我写得对您有所帮助,请点赞关注我,我会持续更新😄

    感谢支持🙏🙏🙏!

    我是GDCoder,我们下期见!

    相关文章

      网友评论

          本文标题:笔记:git命令大汇总+关键命令理解

          本文链接:https://www.haomeiwen.com/subject/eshurltx.html