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

2021-04-30  本文已影响0人  GDCoder

前言:

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,我们下期见!

上一篇下一篇

猜你喜欢

热点阅读