Git是什么???
![da5b58fb9a583ef6b4d1bd7763d63e94.gif](https://img-blog.csdnimg.cn/img_convert/da5b58fb9a583ef6b4d1bd7763d63e94.gif)
在了解Git命令语句之前,首先要先弄清楚什么是Git。
Git是一个现代版的控制系统,由Linux Torvalds从2005年开始开发的一款开源项目。现如今,Git已经被大多数软件团队当做最好的选择。
Git采用了分布式架构,可以让每个开发人员在一个包含有所有更改历史的副本上工作。
最有用的Git命令语句
虽然Git的命令不仅仅有这些,但是如果你掌握了以下这些语句,绝对能大大提高你的工作效率。
克隆一个存储库
![f96834bccfe03e66c00354e2b376fc70.png](https://img-blog.csdnimg.cn/img_convert/f96834bccfe03e66c00354e2b376fc70.png)
有很多的方式都可以复制一个远程存储库,但是有两种方式是最常见的,一个是用HTTPs,一个是用SSH。这两种方式的用的命令是一样的,但是存储库的URL和初始要求会不一样。
用HTTPs克隆需要用户名和密码,如果用了2FA或者单点登录,访问令牌也会被需要。URL会以https://开头。
用SSH克隆需要在本地的机器上使用SSH密钥对,密钥对的公钥需要添加到远程存储库中。URL会以ssh://开头。
如果你只需要克隆一个特定的分支或者一个特定的tag,可以用下方代码。
![12c69e767684592fff41e91378ee6eb8.png](https://img-blog.csdnimg.cn/img_convert/12c69e767684592fff41e91378ee6eb8.png)
再或者,你不希望克隆存储库的整个历史,只是需要一定程度的历史深度,那么浅克隆技术可以被用到。
![969e8f60481fba12c72faa66a19b3d3d.png](https://img-blog.csdnimg.cn/img_convert/969e8f60481fba12c72faa66a19b3d3d.png)
当你用git clone语句克隆了一个存储库,你将会创建一个名为“origin”的远程连接,自动指回到被克隆的存储库。
设置远程连接
![d58868f00bdeafd900b38fbf373e10e3.png](https://img-blog.csdnimg.cn/img_convert/d58868f00bdeafd900b38fbf373e10e3.png)
git remote命令可以让你创建、查看和删除和其他存储库的远程连接。远程连接就像是URL的书签,可以方便我们以后可以便捷地引用。
为了查看带有URL详细信息的远程连接列表,可以用带有“-v”选项的命令。
![f3c9d4108e0af2d050cb4644d06f9605.png](https://img-blog.csdnimg.cn/img_convert/f3c9d4108e0af2d050cb4644d06f9605.png)
添加另一个连接可以使用:
![1d1ff8bacd81815e97d1e6ca018129e9.png](https://img-blog.csdnimg.cn/img_convert/1d1ff8bacd81815e97d1e6ca018129e9.png)
想要重命名现有的连接:
![5c8bafd93bc884a42e8c830f90daa336.png](https://img-blog.csdnimg.cn/img_convert/5c8bafd93bc884a42e8c830f90daa336.png)
如果你不再需要这个连接了,你可以用以下的命令删除它:
![464d345d3a771d883b3fa0a5b0bdb6a8.png](https://img-blog.csdnimg.cn/img_convert/464d345d3a771d883b3fa0a5b0bdb6a8.png)
在和一个团队共同工作了一段时间后,储存库可能会需要一些工作来清除所有过时和合并的分支。在这样的情况下,要删掉远程连接上不再存在的分支的引用,可以用:
![5819b2c1e32606ccc19a3a733b2d33d4.png](https://img-blog.csdnimg.cn/img_convert/5819b2c1e32606ccc19a3a733b2d33d4.png)
但是在做这件事之前,你需要确保本地的存储库已经和远程存储库同步更新到最新版本了。
下载最新的代码版本
![686b98052a9ccaf63fcc6d6c5873a88f.png](https://img-blog.csdnimg.cn/img_convert/686b98052a9ccaf63fcc6d6c5873a88f.png)
git fetch命令帮助你从远程存储库下载文件、提交和引用到本地存储库。它可以让你看到你的团队正在工作的最新的提交历史,并且让你可以在这个基础上检查最新的代码来继续工作。
没有任何选项,get fetch只会下载它克隆的远程存储库。想要获取所有的远程存储库,你可以添加“-all”选项。
![1bc69619080f373aa7a4c9e5c2e6432a.png](https://img-blog.csdnimg.cn/img_convert/1bc69619080f373aa7a4c9e5c2e6432a.png)
如果要获取其他的远程存储库:
![62f99760b2442712e3b2816ce3115f4c.png](https://img-blog.csdnimg.cn/img_convert/62f99760b2442712e3b2816ce3115f4c.png)
更具体的,如果要获取一个远程存储库的某个分支:
![ce32cafc3174a6f2196c23e2d19d6530.png](https://img-blog.csdnimg.cn/img_convert/ce32cafc3174a6f2196c23e2d19d6530.png)
还有一句git pull命令,它其实是git fetch和git merge的结合。git fetch下载了远程内容但不更新活动的本地存储库,而git pull可以下载了内容,然后立刻执行git merge来创建一个git commit。如果活动的本地存储库有还在pending的改变,git pull会导致冲突,但是git fetch会保持状态。
如果你不想有新的merge commit,git有两个选项可以帮助你避免创建新的merge commit。
![f6832c3651388ccd71b3fc1c0d07fcaa.png](https://img-blog.csdnimg.cn/img_convert/f6832c3651388ccd71b3fc1c0d07fcaa.png)
或者用
![3a2d4ab59fcd89d6f7fea8424898a0cb.png](https://img-blog.csdnimg.cn/img_convert/3a2d4ab59fcd89d6f7fea8424898a0cb.png)
检查目标分支
在从远程分支上获取了所有的内容之后,你就可以用一行命令来检查远程的分支或是在本地切换现有分支。
![61a50b326c893fd135df398cfffe4c98.png](https://img-blog.csdnimg.cn/img_convert/61a50b326c893fd135df398cfffe4c98.png)
如果branch name没有特指,git会检查当前的本地分支和远程跟踪的分支,来对比历史记录。你可能会看到以下的结果:
![35e7df98689e995b1e7ab5083baa9bda.png](https://img-blog.csdnimg.cn/img_convert/35e7df98689e995b1e7ab5083baa9bda.png)
而且,利用-b选项,git checkout命令还可以被用来创建一个新的分支,然后立刻切换到新的分支。
![e1e71b28d935dd58694250941a2c0e24.png](https://img-blog.csdnimg.cn/img_convert/e1e71b28d935dd58694250941a2c0e24.png)
如果你在命令里没有指出existing branch,git会把new branch搭建到现在分支的HEAD上。
当branch name匹配多个远程跟踪的分支,为了避免冲突,你可以把remote name包含在branch name前面。
![f4be70de0284edb8cf2ae0ae58f94527.png](https://img-blog.csdnimg.cn/img_convert/f4be70de0284edb8cf2ae0ae58f94527.png)
亦或者,你可以把新分支命名成和远程跟踪的分支相同的名称。
![4946b843dce9448baab05c5a842e0e4b.png](https://img-blog.csdnimg.cn/img_convert/4946b843dce9448baab05c5a842e0e4b.png)
对分支的操作
![86f6f44ede07b7be8147873e567b1d24.png](https://img-blog.csdnimg.cn/img_convert/86f6f44ede07b7be8147873e567b1d24.png)
这个命令可以列出本地的分支。但是,这个语句可以让你做得比这更多。
首先,为了不用查看新的分支就能创建新分支:
![74432fba42ea8b50c4c8346a6da97cf8.png](https://img-blog.csdnimg.cn/img_convert/74432fba42ea8b50c4c8346a6da97cf8.png)
想要重命名当前的分支:
![4030d97da915a5c16cee1c5eb1d5fdc9.png](https://img-blog.csdnimg.cn/img_convert/4030d97da915a5c16cee1c5eb1d5fdc9.png)
想要在本地删除现有的分支:
![95b2419ad424b8ebc735f4b2f19abd16.png](https://img-blog.csdnimg.cn/img_convert/95b2419ad424b8ebc735f4b2f19abd16.png)
-d可以避免你在没有合并更改时删除现有的分支,而-D可以强行让git删除现有的分支。
你可以运用-a来看到所有远程连接的分支:
![6868030ac94f491ace065b74e39ae87c.png](https://img-blog.csdnimg.cn/img_convert/6868030ac94f491ace065b74e39ae87c.png)
如果你想删除一个远程存储库的分支,可以执行以下语句之一。
![079b0a54d2dfad2407ea95e8317ff405.png](https://img-blog.csdnimg.cn/img_convert/079b0a54d2dfad2407ea95e8317ff405.png)
参考资料:https://medium.com/swlh/the-git-commands-every-software-engineer-should-know-part-1-f2b3ebf5c2cf