文章目录
1.git是什么
Git目前是世界上最先进的分布式版本控制系统(主要用于团队协作开发),与之相似的还有SVN等…为数太多,就不一一列举啦
GIt工作原理:
workspace:是项目所在的文件目录下
Repository: 初始化下当前所在的分支
Remote:远程仓库
Index:暂存区
2.git和SVN的区别
Git是分布式版本控制系统,没有中央服务器,每个团队的队员的电脑都是一个完整的版本库,若A修改了文件,提交到仓库的时候,B也可以看到,而且在没有网络的时候也可以进行版本升级或者回退等等
SVN是集中式版本控制系统 只用一个中央服务器,开发成员需要每次从中央服务器拉下最新的代码,然后工作,工作完后需要提交到中央服务器,需要联网才可以使用。
3.安装Git
详细见链接:http://t.csdn.cn/YB4Mc
Git由于在国外,和国内有一道墙,下载有时候特别慢 可以用一个淘宝镜像下载:https://registry.npmmirror.com/binary.html?path=git-for-windows/
4.配置git
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
- /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件 ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
由于Git是分布式版本管理系统,需要用一个标识符来确认你的身份
打开git控制台输入以下命令
$ git config --global user.name "xxx"
$ git config --global user.email [email protected]
第一行你可以自定义一个名字,第二行定义一个邮箱地址,我用的是QQ邮箱地址
如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。
创建好以后就会在计算机C:\Users\Administrator 下创建一个gitconfig配置文件,可以查看配置
5.创建版本库
版本库是什么?版本库又叫仓库,也可以说是一个目录。这个文件的目录都被git管理起来,每个文件的修改,删除,git都可以进行跟踪,或者对文件进行还原
创建一个文件夹
cd vue
md sell
psw
这些是一下liux指令,可以学习一下,很方便。。。
执行git init对仓库进行初始化,使这个仓库变成一个git可以管理的仓库
git init
这时候你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了
注意:Git只能跟踪文本文件,网页,所有程序的代码,像一些图片,视频二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道
6.提交&&修改(git add git commit)
6.1提交
我用例子来演示一遍:
- 我在版本库sell下创建一个read.txt文件,内容:22222
- 用git add文件名提交到暂存区
像这样就已经成功了 - 用命令git commit 提交到仓库
4.之后可以运行 git status查看文件是否提交
6.2修改
5.说明没有任何文件,继续修改文件 加一行333333 继续使用 git status 结果如下:
上面显示的是文件已经被修改,但是未被提交的修改 ,如果想看被修改的文件可以执行 git diff read.txt
对内容进行查看
可以看到 文件从1111111 添加了一行222222内容 然后执行 git add git commit 提交完以后可以使用git status进行查看
6.3创建仓库命令
提交修改命令:
7.版本回退
7.1版本回退
我们已经学会了如何修改文件,现在我们继续对read.txt文件进行修改,再增加一行 55556666
继续执行以下指令:
现在已经对read.txt文件做了三次修改,如果想查看一下历史记录,可以执行git log:
git log从近到远显示修改的日志,如果嫌弃显示的信息过多,可以使用命令git log --pretty=oneline:
现在我想使用版本回退操作,我想把当前的版本回退到上一个版本,可以使用2种命令,
第一种: git reset --hard HEAD^
如果想要回退到上上个版本可以用把HEAD^ 改成 HEAD^^ 以此类推。。。。
问题来了,如果我们想要退回99个版本怎么办,不可能一一退吧,可以使用第二种方法
第二种git reset --hard HEAD ~9
下面我们来操作一下,先看read.txt文件:
7.2 取消回退
如果想回退到上一个版本操作如下:
在查看一下read.txt内容 执行 cat read.txt:
可以看到内容已经回退到上一个版本 继续使用git log来查看一下历史记录信息:
我们看到 第三次修改内容已经不见了,如果我想恢复第三次修改的内容如何操作呢。。。
我们可以通过版本号回退,使用命令git reset --hard 版本号,如何获取版本号执行git reflog :
通过上面我们知道 第三次修改的版本号为 Fb68641 现在我们可以执行 git reset --hard Fb68641,然后在执行cat read.txt
目前是最新版本啦
7.3版本回退命令:
8.理解工作区,暂存区,版本库,远程仓库
工作区:就是你在初始化git的时候的那个目录,比如我的D:\VUE\sell
版本库:就是工作区中的.git的文件,这个属于版本库,提交的版本都到了这个文件里面,一般情况下不要乱动这个文件
暂存区:就是.git文件下的一个stage 还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD
我们可以来测试一下,在read.txt下创建一个内容 Hellow word 接着在目录下创建一个test.txt 定义内容
11111:
现在把他们都提交到暂存区,再使用git status查看一下状态,如下:
然后我们一次性提交:
全部提交到了版本库。
9.撤销修改&删除文件
9.1撤销修改
比如说这样一种情况,我在read.txt新加了一行内容7777777,还未提交到暂存区,我发现内容有错误,
我可以用那些方法作修改:
- 第一种,如果知道那些内容有错误,可以直接修改内容然后添加到暂存区,最后commit掉
- 第二种,可以直接恢复上一个版本 git reset --hard HDEA^
如果以上方法都不使用,我们可以直接使用撤销命令,先用git status 查看当前的状态 然后看一下read.txt文件都有啥
可以发现文件有修改 多加了一行7777777777 但是未提交
可以执行以下的命令:git checkout – read.txt,:
可以发现777777这行内容没啦 ,那么git checkout – read.txt,命令的的意思就是 把read.txt文件在工作区的内容全部撤掉啦,不过需要注意的其他情况:
第一是还未放到暂存区,使用当前命令可以回到未修改之前状态
如果已经提交到暂存区,接着许做了修改 ,撤销就回到添加暂存区后的状态
可以用一个demo来看看效果:
我对read.txt 文件添加了一行内容 88888888 添加到暂存区 接着添加内容999999999 通过撤销命令可以看看效果:
如果git checkout – read.txt 不加-- 会变成创建分支
9.2.删除文件
在版本库木下添加一个 tape.txt 文件 然后提交
可以发现提示的文件已经删除,现在有两条路可以走,
1.就是 git rm git commit 就会彻底删除版本库文件
2.输入git checkout – 文件名 进行恢复
可以看到文件已经被修改
10.远程仓库
可以访问链接:https://www.cnblogs.com/technicist/p/12951912.html
11.远程仓库
11.1如何添加远程仓库
现在的情况是 我们在本地已经创建好了 Git仓库 gitee也已经创好了仓库 希望这两个仓库进行远程同步
输入 git remote add origin https://gitee.com/zyqwertyuio/zyenter-set.git 我的是这个
输入完需要写入账号和密码
然后执行git push origin master 推送到远程仓库 第一次推送需要加 -u
11.2 如何从远程仓库克隆
只需要 git clone 加上远程仓库的地址即可
12.创建与合并分支
GIt 每次操作不仅是一个时间线 协作开发需要多个时间线 master 这个是主分支,
我们创建一个dev分支 然后切换到dev分支上 如下操作
git checkout 加上-b 表示创建并切换 相当于如下两条命令
git branch dev
git checkout dev
git branch 会列出所有分支 有星号代表当前分支
我们在dev上进行操作 在read,txt添加一条内容 9999 接着提交
现在我们切换分支 到master
发现dev的内容不见了 因为不是dev分支
我们可以把dev内容合并到master上 执行 git merge dev
git merge命令用于合并指定分支到当前分支上,合并后,再查看readme.txt内容,可以看到,和dev分支最新提交的是完全一样的。
注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。
接着我们可以删除 dev分支 执行 git branch -d name
可以发现,分支已经被删除
总结创建与合并分支命令如下:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout –b name
合并某分支到当前分支:git merge name
删除分支:git branch –d name
13.解决冲突
先新建一个分支 名字叫dev 在read.txt 增加一行内容 然后提交 如下所示:
我们切换到master分支 新增内容 提交
我们在master合并分支
手动解决完即可 提交到远程仓库
版权归原作者 剪得断理得清 所有, 如有侵权,请联系我们删除。