找人做的网站第二年多钱,服装定制官网,网站服务内容填网站建设可以,做暖暖在线获取网站一、Git是什么1#xff0e;Git是目前世界上最先进的分布式版本管理系统
2#xff0e;工作原理/流程workspace#xff1a;工作区
Index/Stage#xff1a;暂存区
Repository#xff1a;仓库区#xff08;本地仓库#xff09;
Remote#xff1a;远程仓库二、SVN和Git的最主…一、Git是什么
1Git是目前世界上最先进的分布式版本管理系统
2工作原理/流程
workspace工作区
Index/Stage暂存区
Repository仓库区本地仓库
Remote远程仓库二、SVN和Git的最主要的区别
1SVN是集中式版本控制系统版本库是集中放在中央服务器的而干活的时候用的都是自己的电脑所以首先要从中央服务器那里得到最新的版本然后干活干完后需要把自己做的活推送到中央服务器集中式版本控制系统是必须联网才能工作如果在局域网中还可以带宽够大速度够快如果是在互联网中如果网速慢的话就纳闷了。
2Git是分布式版本控制系统它没有中央服务器每个人的电脑就是一个完整的版本库这样工作的时候就不需要联网了因为版本都在自己的电脑上既然每个人的电脑都有一个完整的版本库那么多人如何协作呢比如说自己在电脑上改了文件A其他人也在电脑上改了文件A这时你们俩之间只需要把各自修改推送给对方就可以看到对方修改了。三、Git的安装
1比较傻瓜化一路向前一下步即可。四、如何操作Git
1创建版本库
什么是版本库版本库又名仓库英文名Repository你可以简单的理解就是一个目录只是这个目录里面的所有文件都被Git管理起来了每个文件的修改、删除Git都能跟踪一般任何时刻都可以追踪历史或者在将来的某个时刻将文件“还原”。
所以创建版本库也比较简单比如在某一个盘下面新建一个文件夹”testgit”作为版本库例如在F盘创建一个testgit文件夹然后右键该文件夹使用”Git Bash Here”打开
然后在Git的命令窗口中运行”git init”将当前的testgit目录初始化成Git可以管理的仓库如下
此时在testgit目录下会多一个”.git”的隐藏目录这个目录是Git用来跟踪和管理版本的不要乱动这个目录的文件否则会将Git仓库破坏掉2把文件添加到版本库
在testgit目录下新建一个文件readme.txt输入内容111111111111111111
第一步使用”git add readme.txt”将文件添加到暂存区Index/Stage
第二步使用命令”git commit”将暂存区的文件提交给本地仓库仓库/版本库
-m后面的文字是注释
此时我们可以使用”git status”命令来查看是否还有其他文件没有提交给本地仓库
说明没有任何文件未提交现在我们继续修改readme.txt比如添加一行222222222222222继续使用”git status”来查看
上面的命令告诉我们readme.txt文件已经被修改但是没有添加到暂存区从而可以提交给本地仓库如果我们想看看readme.txt文件到底修改了哪些内容可以使用如下命令git diff readme.txt
可以看到readme.txt增加了22222222222222222的内容知道了readme.txt修改了什么内容之后我们就可以将其提交给仓库提交修改的方式和提交文件的方式相同
总结
添加新文件或修改文件
1. 添加到暂存区git add 文件名
2. 提交到本地仓库git commit -m ‘注释’五、版本回退
之前我们已经学习了修改文件现在我们继续修改readme.txt再增加一行33333333333333继续add和commit现在我们已经对readme.txt进行了3次修改那么我们想查看一下历史记录如何查看呢我们可以使用”git log”来查看“git log”命令显示从近到远的日志最近一次是增加33333333333333上一次是添加22222222222222第一次是默认的111111111111111如果觉得日志显示内容太多可以使用命令”git log --prettyoneline”现在我们想使用版本回退功能把当前版本回退到上一个版本可以使用如下两个命令
第一种”git reset --hard HEAD^”表示回退到上一个版本要回退到上上版本就把HEAD^改为HEAD^^以此类推如果要回退100个版本这种方式肯定不方便可以使用第二种方式。
第二种”git reset --hard HEAD~100”回退到之前的第100个版本
示例当然我们可以继续使用”git log”来查看当前的历史记录我们可以看到增加3333333333333的历史记录不见了但是现在我们又想回退到最新的版本我们可以通过“版本号”回退使用命令”git reset --hard 版本号”现在的问题是如何获取版本号我们可以通过”git reflog”来查看版本号我们可以看到增加3333333333333的版本号是2fa4a8e现在我们可以通过命令来恢复现在我们又恢复到了增加3333333333333333的版本上了。
总结
回退版本git reset --hard HEAD^git reset --hard HEAD~100
查看历史记录git loggit log --prettyoneline
查看版本git reflog
回退到指定版本git reset --hard 版本号六、理解工作区和暂存区的区别
1工作区就是你电脑上看到的目录比如目录testgit里面的文件.git隐藏目录版本库除外或者以后需要再新建的目录文件等等都是属于工作区范畴。
2版本库Repository工作区中有一个隐藏目录.git这个不属于工作区是版本库其中包含了很多东西其中最重要的就是stage暂存区还有Git为我们自动创建的第一个分支master以及指向master分支的一个指针HEAD。
我们前面说明使用Git提交文件到版本库有两步
第一步使用”git add”把文件添加到暂存区
第二步使用”git commit”将暂存区的内容提交到版本本地仓库的当前分支上
现在我们在readme.txt中增加444444444444444444内容并且在该目录中新加文件test.txt先用”git status”查看一下状态
然后我们使用”git add”将两个文件都添加到暂存区再使用”git status”查看
接着使用”git commit”一次性将两个文件都提交到当前分支
所以我们总结出来不管是第一次创建文件还是修改文件还是新增文件处理方式都一致都是add之后commit就行。七、Git撤销修改和删除文件操作
1撤销修改
比如我们在readme.txt中增加一行555555555555555555先通过命令查看一下
在还没有提交之前我们发现添加的5555555555555555有错需要恢复到以前的版本可以有如下做法
1如果我们知道要删除哪些内容的话直接手动修改文件然后再add到暂存区最后commit掉2删除文件
假如版本库testgit目录中添加了一个文件b.txt然后提交
我们可以直接在目录下删除文件
再运行git status
可以看到b.txt文件已经被删除此时有两种选择一种是直接commit掉二是从版本库中恢复被删除的文件。
一般情况下可以直接在文件目录中将文件删除如果想彻底从版本库中删除此文件的话可以再运行commit命令提交只要没有commit之前我们可以通过”git checkout -- 文件名”就可以恢复被删除的文件
如果想彻底删除从暂存区删除
提交版本库总结
已经提交的文件被删除
恢复git checkout -- 文件名
彻底删除
暂存库删除git rm 文件名
提交git commit -m ‘注释’八、远程仓库
如何添加远程仓库
现在的场景是我们已经在本地创建了Git仓库又想在Gitee码云或GitHub国外上创建Git的远程仓库并且希望这两个仓库同步这样Gitee的远程仓库可以作为备份其他人也可以通过该远程仓库来协作。
首先注册Gitee登陆Gitee创建一个新的仓库因为Git是分布式版本控制系统所以需要填写用户名和邮箱来作为一个标识注意git config --global参数有了这个参数标识你的机器上的所有的Git仓库都会使用这个配置当然你可以对某个仓库指定不同的用户名和邮箱
现在我们对本地仓库进行Git全局设置然后给Git指定远程个仓库的地址git remote add origin 远程仓库的URL地址URL地址在这里我们把之前testgit目录下的所有文件commit到本地仓库
当所有文件都add到暂存区并且commit到本地仓库后就可以使用push命令把本地仓库的内容推送到远程仓库而上面设置的就是远程仓库的地址第一次推送的时候要加上-u参数
注意有时候要输入用户名和密码你需要输入你注册Gitee的手机号和密码
到远程仓库看一下
把本地仓库的内容推送到远程仓库使用”git push”命令实际上是把当前分支master推送到远程由于远程是空的所以第一次推送master分支的时候要加上”-u”参数Git不但会把本地的master分支内容推送到远程新的master分支还会把本地的master分支和远程的master分支关联起来在以后的推送或拉取时就可以简化命令。从现在起只要本地做了提交commit就可以通过”git push origin master”把本地的master分支的最新修改推送到Gitee远程仓库上现在你就拥有了真正的分布式版本库了。如何从远程仓库克隆到本地
假如远程仓库有新的内容我们想克隆到本地如何克隆首先登陆Gitee创建一个新的仓库名叫testgit2并添加文件到仓库中点击“初始化readme.txt”生成远程仓库的新文件
此时远程仓库就准备好了下一步使用”git clone”克隆一个本地库首先在本地创建一个testgit2文件夹然后在该文件夹中克隆
克隆的地址在这里
此时我们就可以在克隆的目录中进行修改然后再addcommitpush到远程仓库
远程仓库九、创建合并分支
1在版本回退里我们知道每次提交Git都把它们串成一条时间线这条时间线就是第一个分支到目前为止我们只有一条时间线在Git中这个分支时间线叫做主分支即master分支HEAD严格来说不是指向提交而是指向master而master才是指向提交的所以HEAD指向的就是当前分支。
1首先我们来创建dev分支然后切换到dev分支使用之前的testgit仓库查看分支
其中”git checkout”命令加上”-b”参数表示创建并切换分支相当于执行了如下两条命令
git branch dev #创建dev分支
git checkout dev #切换到dev分支
git branch命令会列出所有的分支并且当前分支前面有一个”*”。2然后我们在dev分支继续做比如现在给readme.txt增加6666666666666
3现在dev分支工作已经完成现在我们切换到master分支继续查看readme.txt内容
发现没有66666666666666内容因为现在不是dev分支十、分支管理策略
通常合并分支时Git一般使用”Fast forward”模式在这种模式下删除分支后会丢掉分支信息我们可以使用带参数”--no-ff”禁用”Fast forward”模式。1现在我们可以将dev分支的内容合并到master分支使用命令”git merge dev”
“git merge”命令用于合并指定分支到当前分支合并后再查看readme.txt内容可以看到和dev分支最新提交的内容完全一致。
注意到上的”Fast-forward”信息Git告诉我们这次合并使用”快进方式”也就是直接把master分支指向dev的当前提交所以合并速度非常快合并完成之后我们就可以把dev分支删除了2如何解决分支的冲突
我们新建一个分支名叫fenzhi1然后在readme.txt中添加一行7777777777777777然后提交同样切换到master分支也在最后一行增加88888888888888888
现在我们在master分支上合并fenzhi1
查看merge之后的文件发现Git使用,,标记出不同分支的内容其中HEAD是指主分支内容fenzhi1是指fenzhi1上修改的内容我们可以手动修改文件之后提交
如果我们想查看分支合并的情况的话可以使用”git log”十一、Bug分支
在开发过程中经常会碰到bug那么有了bug就要修复在Git中分支是很强大的每个bug都可以通过一个临时分支来修复修改完成后合并分支然后将临时分支删除掉。
比如我们在开发过程中遇到了一个404 bug的时候可以创建一个404分支来修复它但是当前dev分支上还有工作没有提交比如并不是我们不想commit这个dev分支而是工作进行了一半还不能提交比如dev分支还需要2天完成但是issue-404的bug需要5小时内完成那怎么办呢Git还提供了一个stash的功能可以将当前的工作现场”隐藏起来”等到以后要用的时候恢复现场继续工作例如
此时查看dev分支的状态发现所有内容已经提交是干净的。
现在我们就可以创建issue-404分支来修复404的bug了
首先我们要确定在哪个分支上修改bug比如我们现在是在主分支master上来修复的所以要在master分支上创建一个临时分支issue404修复bug完成之后切换到master分支完成合并最后删除issue-404分支
切换到master分支然后禁用了”Fast Forward”模式的前提下进行issue-404分支merge到master分支然后删除issue-404分支。现在我们可以回到dev分支继续干活
运行”git status”发现dev分支是干净的那么我们的工作现场在哪里呢我们可以使用命令”git stash list”来查看
工作现场还在Git把stash内容存在了某个地方需要恢复一下有两种方法恢复现场
1”git stash apply”恢复后在使用”git stash drop”删除
2“git stash pop”恢复现场的同时把stash内容删除然后我们就可以在dev分支上继续做后面的工作了。十二、多人协作‘
当你从远程仓库克隆的时候实际上Git自动把本地的master分支和远程的master分支对应起来并且远程库默认的名称是origin
查看远程库的信息使用git remote如果要查看详细信息git remote -v
1. 推送分支
推送分支就是把该分支上的所有本地内容提交到远程库中推送时要指定本地分支这样Git就会把该分支推送到远程对应的分支上使用命令git push origin master
比如本地的readme.txt
远程仓库现在我们想把本地更新的readme.txt推送到远程仓库可以使用如下命令
远程库可以看到推送成功如果我们现在要推送到其他分支比如dev分支那么还是这个命令
git push origin dev
那么一般情况下哪些分支要推送呢
master是主分支因此要与远程同步一些修复bug的分支不需要推送到远程可以先合并到主分支master然后再把主分支master推送到远程去。2. 抓取分支
多人协作时大家都会往master分支推送各自的修改现在我们可以模拟另一个同事可以在另外一台电脑或同一个电脑的另一个目录中克隆新建目录名为testgit2接着进入testgit2目录进行克隆远程库到本地来如下目录现在我们的同事要在dev分支上做开发就必须把远程的origin的dev分支弄到本地来于是可以使用命令创建dev分支git checkout -b origin/dev
首先我们需要将dev分支推送到远程仓库在testgit目录中完成
远程仓库
其次使用”git checkout -b dev origin/dev”命令把远程origin库的dev分支弄到本地来在testgit2目录中完成
如果命令运行出错则运行”git fetch origin”进行远程同步即可
修改readme.txt在testgit2中
远程仓库
同事已经向origin/dev分支推送了修改内容而我的目录文件中也对同一个地方做修改也试图推送到远程库时如下
由上可知推送失败因为我的同事最新提交的和我试图推送的有冲突解决办法也很简单上面已经给出提示了先用”git pull”把最新的提交从”origin/dev”抓取下来然后在本地合并解决冲突再推送
git pull也失败了原因是没有指定本地dev分支与远程origin/dev分支的连接根据提示设置本地dev分支和远程origin/dev的连接这会”git pull”成功了并且提示合并有冲突需要手动解决解决办法和分支管理中解决冲突的办法一致解决冲突后在提交再push到远程库
现在我们已经手动将冲突解决了所以可以再次提交再次push
远程库
因此多人协作的工作模式一般是这样的
首先可以试图使用”git push origin 分支名”去推送自己的修改如果推送失败则因为远程分支比你本地更新的早需要先试用”git pull”试图合并如果合并有冲突则手动解决冲突然后在本地再次提交再次”git push origin 分支名”去推送。多人远程协作的经验就是先pull之后进行本地修改改完再去提交和push。