博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git基础整理
阅读量:6714 次
发布时间:2019-06-25

本文共 2596 字,大约阅读时间需要 8 分钟。

之前用git做项目版本管理的时候,只是机械式的知道几个常用命令的用法。觉得也够用,就不再深入了解了。现在想重新梳理一下git相关的知识,以便以后更好更透彻的使用它。

git起源:

` Linus在1991年创建了开源的Linux,,经过二十多年的发展壮大,已经成为最大的服务器系统。

然后最开始,Linux的合并都是手动完成的。但是后面越来越庞大,怎么办?

刚开始用的别人家的版本控制系统,后来出现了一些矛盾,别人不给用了,于是 Linus Torvalds自己动手,花了两周,写了最初版本的git。 然后经过多年发展,特别是2008年网站的上线,git已经成为最强大的分布式版本控制系统。

集中式是版本都集中存放在一台中心服务器上,每台主机每次要改的时候就得先从中心服务器上先拉下来。改好了之后在放回去。你自己电脑里是没有版本控制系统的。而分布式就是每一台主机都是一个完整的版本库,你可以在自己电脑上不联网也能很好的进行版本控制。再也不用在文件夹看到好多个“XXX-副本.xxx”了(git的强大之处在于:

跟踪并管理的是修改,而非文件。
)。

git安装和初始化:

Windows直接下载安装就好 。Linux的话(Ubuntu)使用如下命令就可以了:

sudo apt-get install git复制代码

安装成功后,在需要版本控制的项目目录下使用命令就完成了git的初始化了:

git init复制代码

初始化完成之后,会在当前目录下生成一个.git的隐藏文件夹,版本信息就存在里面啦(没事别修改里面内容)。接下来就可以为所欲为了~

git基本操作

当你的项目目录下有文件的改动时(增删改),就得添加进git里面,需要用到以下几个命令:

git add 改动过的文件名    git commit -m‘改动的原因’复制代码

这样就把改动过的文件信息提交到git啦,在本地仓库里生成了一个新的版本HEAD 后面的字符串就是该版本的版本号。

当改动文件多的时候可以使用 git add . 添加所有已改动文件。

在git中,用HEAD表示当前版本,也就是最新的那个版本。要回退到某个版本只要使用命令:

git reset --hard 版本号复制代码

就可以回退到指定的版本了。

然而,第二天发现其实不用回退,而版本已经被回退了,怎么办呢?没关系,使用:

git reflog复制代码

查看你操作的每次命令,在这里又能看到被回退之前的那个版本的版本号了,好了,再次git reset --hard 版本号,又回来了~

git远程仓库

既然式分布式版本控制系统,那就不只能在一台机器上玩。

要跟远方的朋友一起玩怎么办?

1.如果本地没有此项目,要从远程把仓库复制一份下来,使用:

git clone 目标git仓库地址复制代码

2.如果是本地创建的仓库,远程没有,要推到远程仓库,使用:

git remote add origin 远程空仓库的地址复制代码

把更改推送到远程仓库:

git push origin master复制代码

但是,要是多个人一起推送到远程仓库,远程有别的仓库的新的更改,你就推不上去了。这时候就要使用命令:

git pull复制代码

把远程的更改抓取同步到本地,然后就能继续push你新修改的代码了。

git分支

git仓库创建的时候,会自动生成一个主分支,就是master.通常情况下,你不需要使用分支,用master一条分支就够了。但是当多人协同任务时,你的工作要一个月才能做完,但是你没做完之前就提交到远程分支的话,系统就不能正常运行了,而别人也没法工作。有了分支,每个人就可以敲自己的代码,而不影响主程序了。到期做完了, 再一次性合并,就万事大吉。

创建和切换分支:

git branch dev1 #创建分支    git checkout dev1#切换分支    复制代码

查看分支:

git branch复制代码

可以看到master和dev1两个分支。

现在分支就从主干master切换到了dev1上了,于是就可以在dev1上为所欲为了。这时候在dev1上的各种提交,master上式看不到的,它还在是切换的那个时间点的那个状态。一顿操作之后,再次切换到master主干分支:

git checkout master复制代码

把dev1分支的内容合并到master:

git merge dev1复制代码

现在发现master的内容跟dev1一样了,合并成功!然后就可以删除分支:

git branch -d dev1复制代码

再次查看分支:

git branch复制代码

只剩下master了。

git冲突解决

多人合作,总避免不了修改同一个文件的同一个位置,当发生这种情况的时候,合并就会出现冲突了。当push出现push fail或者merge出现fail的时候,你就需要查看是不是文件发生冲突了,使用:

git status复制代码

查看当前git状态,以及出现冲突的文件。我们打开冲突的文件,看到一些由<<<<<<<=======>>>>>>>标记出冲突分支的内容,这时候需要我们手动把这些冲突部分修改完成,重新提交,这时候就能成功合并了。

总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!

git忽略文件:

很多时候项目目录下有的文件或者目录你并不想加入到git仓库中,比如说第三方库文件,uploads上传文件夹(超级大)。那就需要使用.gitignore了,在,git同级目录下,将你不希望同步到git仓库的文件或者文件夹添加进去,git在add .的时候就会忽略掉它们了。

git查找错误文件:

之前在做题,遇到一题关于git的

有1个由无数python高级工程师维护的巨型python项目,经历了10000次commit。

很不幸的是,master分支上最新的代码并不能顺利通过unit.py的单元测试(python unit.py)。

你需要找到一个最近的能通过unit.py单元测试的版本,并进而知道谁是第一个引入bug导致unit.py失败的工程师。

找出这个工程师的名字?

人肉去找这个名字的话那就得忙活一会儿了

还好git给我们提供了一个不用人肉的办法:二分查找,具体请看看

转载地址:http://rtelo.baihongyu.com/

你可能感兴趣的文章
GraphicsMagick安装&make命令使用
查看>>
用MeanJS和Yeoman生成器生成【翻译】
查看>>
加个图
查看>>
docker之container
查看>>
入园第一天
查看>>
使用BackgroundWorker解决窗口卡死
查看>>
Thinkpad 笔记本 装win7 64 位操作系统热键驱动装不上问题解决!
查看>>
【演讲实录】下一代企业级应用架构管理体系
查看>>
1.11考试
查看>>
变量和数据类型 .py
查看>>
最小生成树专题总结
查看>>
BOM属性对象方法
查看>>
02 求1-100所有整数的和
查看>>
springboot pom.xml记
查看>>
Generating Sankey Diagrams from rCharts
查看>>
数学计划
查看>>
第0周---python网络爬虫前奏
查看>>
LinqPad使用教程
查看>>
各种排序算法比较
查看>>
限制html文本框input只能输入数字和小数点
查看>>