赞
踩
本篇文章是通过对一个自建项目执行一些常用的git命令来熟悉git的使用,在此过程中,我会尽可能模拟可能出现的一些异常情况,分析原因并告诉你如何解决,希望你以后在遇到新的问题时也能用类似的方法去解决。
项目地址:https://github.com/Wang-Yongqiang/git-test.git
学习的git命令:git clone、git status、git add、git commit、git push、git pull
执行环境:MacOS、终端(防止大家受IDE的影响而不清楚各命令到底是在干嘛)
选择一个你想放置该项目的目录,这里我选择如下目录,该目录下暂无任何其他文件
然后执行git clone命令
git clone git@github.com:Wang-Yongqiang/git-test.git
git@xxx这个链接表示用ssh协议传输,会更稳定,强烈推荐使用,用http协议经常会莫名其妙断掉。
clone完之后该目录下就有了git-test这个项目
在这里我再clone一次看看会发生什么事情
它说git-test项目已经存在了,因此不能再clone,只有把这个项目删掉才能再clone。
对clone到本地的项目进行一些修改,我们进入到该项目里面去修改一个文件
先按 esc键,然后执行 :wq命令将修改保存并退出。
我们可以看到README.md中的内容已经改变了,但它的改变仅仅保留在文件系统中,对于git来说该文件和之前是一样的。
可以用git status命令查看当前项目下哪些文件在文件系统中有改动。
通过上图我们可以发现只有README.md文件在文件系统中有改动。
为了让git知道我们对该文件做了修改,我们需要将修改添加到git的缓存区里。
如果只是将单个改动的文件添加到git缓冲区里,则添加指定文件
git add README.md
如果改动文件很多,且需要添加全部改动文件,则通常统一添加
git add .
我们再执行一下git status看看会发生什么
此时改动且被添加到git缓冲区里的文件提示信息变成绿色了,其实这种颜色的变化就是在告诉你该文件现在处于什么状态。
在添加到git缓冲区之后,我们需要将缓冲区里的信息提交到本地仓库,以使得新的项目文件称为一个新版本。
git commit -m "这是一个新版本" // -m表示这次提交的描述信息
提交之后我们可以发现本地仓库之前的一个版本,这个新版本有一个文件被改变了,具体改变为插入了2行数据。
我们再执行一个git status看看会有什么变化
此时提示信息告诉我们,本地仓库该分支领先远程仓库的main分支一次提交/一个版本,且git缓冲区中没有需要提交的信息。
也就是说git status会记录文件系统中和git缓冲区中具体文件的改变,而在仓库中只记录提交版本的变化,不到具体某个文件。
既然本地仓库版本已经更新了,那么我们可以将其推送到远程仓库。
git push
推送之后我们到远程仓库里看看是否更新了,此处我用的远程仓库是github里的,其实还有很多其他的远程仓库,例如gitee、私有云仓库等等。
我们可以看到远程仓库里该项目的README.md文件的确是更新了。
最后,我们模拟经常遇到的一种情况,即别人对远程仓库进行了更新,而我们还在对远程仓库的之前的某个版本在更新,此时直接推送是无法成功的,我们首先需要将远程仓库的最新版本拉取下来,但这时很容易产生冲突,需要手动更改冲突,只有冲突改完了,再次将改动文件添加到git缓冲区,并提交到本地仓库,才能推送成功。
我在另一个终端里用该用户来模拟第二个用户对该仓库的更新,我们看到远程仓库的内容更新如下。
而原终端中README.md里面的内容还是和原来一样。
此时我们试试做一点点改变,然后直接推送看看会发生什么事情
此处我没有放前面的git add和git commit操作界面,但是需要执行这两条命令的,然后执行git push命令,结果发生了如下的事情。
提示信息告诉我们本地仓库最新版本没有远程仓库最新版本的一些东西,即本地仓库没有更新到远程仓库的最新版本,由于版本不对应,直接推送被拒绝了。
我们应该先拉取远程仓库的最新版本。
git pull
根据提示信息我们发现在本地仓库的README.md文件与远程仓库的README.md文件内容合并时产生了冲突,我们需要手动选择冲突的部分
这里我选择保留本地仓库的内容,删掉远程仓库的内容。
我们再次执行git status命令查看当前各文件的状态。
根据提示,我们需要执行git rebase --continue,这用来告诉git我们已经解决了冲突,不过在这之前需要先执行git add和git commit将新内容添加到本地仓库里。
接下来再次和git push就可以推送成功了。
我们再次看看远程仓库里的内容。
它和本地仓库最新版本中的内容保持一致了。
以上几乎是git中最常用的一些命令,如果能够清楚各个命令做的事情以及执行完之后整个项目所处的状态,那么用git进行版本控制就能轻车熟路了,希望大家能够带有思考地进行使用,这样用起来才会更有收获。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。