1.git是什么?
git是一个分布式版本控制系统。说白了,它就是一个版本控制系统,git只是它的一个名字而已。
2.什么又是版本控制?
这里借助一篇博客的案例,假设有一个场景,你在做毕业论文的时候,第一次提交上去,知道老师发觉你写的不好,就叫你回去改,我们通常的做法就是不改变原论文,复制一份出来,在复制的论文上做新的修改,因为万一哪天知道老师说你改的还不如以前的,我们还可以在原来的基础上修改。
这个案例中,原来的论文是一个版本,新复制出来的论文由于我们做了修改,所以它是另一个版本,这个原来版本到新版本的过程就叫版本控制。只是这个过程是我们手动完成的。
3.那版本控制系统又是什么呢?
版本控制系统就是将上面的步骤自动地帮我们完成,从而做到版本控制的一个系统,也可以叫一个程序。
我们需要进行版本控制的文件都要提交到一个仓库(其实就是一个隐藏文件夹)里面,我们对文件做出的修改都会被这个版本控制系统侦测到,如果我们要保留这个版本的文件,就要通过版本控制系统提供的命令把文件提交到仓库里面,然后版本控制系统就会自动为我们提交的文件打上版本号。
4.版本控制系统分类
1.分布式版本控制系统(Git)
1.在上述案例中,原版本会配置一个仓库,叫远程仓库(gitHub),新修改的版本会配置一个仓库,叫本地仓库,一般就是自己的磁盘。
2.我们在提交的时候,会先提交到本地仓库,在有网络的情况下,再从本地仓库提交到远程仓库。
3.Git就是一个典型的分布式版本控制系统。
2.集中式版本控制系统(SVN)
1.只配置的有上述案例中的远程仓库,就是放置的是原版文件
2.我们在提交文件的时候,就直接提交到远程仓库。
3.SVN就是一个典型的集中式版本控制系统。
5.容易混淆的GitHub
GitHub就是上述案例中,担任远程仓库这个角色的,就是存放在外网服务器上的一个文件夹,用来保存文件。
6.Git管理项目的命令
执行过程:先通过命令git clone进行仓库的初始化,查看仓库状态git status,将修改的文件上传到缓存区Index,由缓存区将修改好的文件提交到本地仓库git commit,然后拉取远程仓库的更新git pull,在这个过程中,入发生冲突,就解决冲突,如果没有冲突,就将本地仓库的改动提交到远程,最后在查看当前的提交日志,从日志上可以看到操作的步骤和命令。
常用的命令:
新增文件的命令:git add file 或者 git add
提交文件的命令:git commit -m 或者 git commit -a
查看工作区状态:git status -s
拉取合并远程分支的操作:git fetch/git merge 或者 git pull
查看提交记录命令:git reflog
7.提交时发生冲突,如何解决?
冲突的产生:
1、多个分支代码合并到一个分支时
2、多个分支向同一个远端分支推送代码时
冲突产生的具体情况:
1、两个分支中修改了同一个文件(同一个文件的同一个位置的不同修改)
2、两个分支中修改了同一个文件的名称
关于push和pull其实就分别是用本地分支合并到远程分支 和 将远程分支合并到本地分支
解决冲突:
1.先将本地修改存储起来------git stash
2.暂存了本地修改后,就可以pull(将远程分支合并到本地分支上)了------git pull
3.还原暂存的内容------git stash pop stash@{0}
4.解决文件中冲突的部分(需要手动解决)
5.解决完成之后,就可以提交。