前几天写了一篇简单的Github的使用博客,主要是介绍了安装过程和一个人的单独使用,没有考虑什么分支,合并,倒退等等
接下来一段时间我们将会对Git命令做一个相对全面的总结,以此来方便对Github的使用
(我把Github的分为了两个库:本地库和远程库。顾名思义,一个本地的,一个是服务器的)
首先我们简单说一下Git的工作方式:
第一步:在自己的本地工作区工作(也就是在本地库中)
第二步:将文档添加到暂存区
第三步:将文档提交到当前分支
第四步:将当前分支推送到远程库
第一种:直接将远程仓库克隆下来,其命令如下:
git clone 【URL】 【本地新建的文件名】 即跟上想要克隆下来的文件地址,后面可以跟上想要在本地保存的文件夹的名字
注:不建议使用【本地新建的文件名】,和远程库上保持一直最好,不至于混淆
如果是在Github下面,则输入: git clone git@github.com:【用户名】/【远程库名】.git
第二种:手动将本地和远程绑定
既然是手动绑定,就是说先要由两个仓库,远程仓库就不说了,网页创建就好了,本地仓库如何创建恩?
创建本地库(此时处于工作区中):git init
注:移动到想要作为仓库的文件夹下,输入该命令,将该文件改变为本地仓库(可以通过输入:ls -al 查看是否有.git 目录判断)
将本地库和远程库绑定:git remote add 【服务器名】 【URL】
注:服务器名可以自己随意定义,URL就是远程仓库的地址(同理,如果是Github的话,其URL为:git@github.com:【用户名】/【远程库名】.git)
绑定之后需要确认是否成功,输入: git pull 注:这个命令就是将远程仓库中的文件拉取到本地仓库并与本地仓库合并,git clone 其实也是调用了这个命令
这个地方有可能会报错,如下:
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
输入:git pull 【服务器名】 【分支名】 来解决冲突,将两边合并
注:服务器名就是刚刚创建的时候的名字。而分支名,一般情况下都是master,因为仓库刚刚创建,并没有分支,就是主分支
将本地工作区的文件添加到暂存区: git add 【文件名】
将暂存区的所有文档提交到当前分支:git commit -m "【提示信息】" 提示信息用来提示当前提交的内容
注: 一般情况下,当本地的文件完成之后就可以添加到暂存区,而当一次工作结束了之后再将暂存区中的所有文档提交到当前分支
既然git命令将文档分成了多种状态,那么我们应该如何查看每个文件都处于什么状态呢?
这里就需要引入我们状态查看命令:git status
此时终端会显示当前目录下所有文档的情况,如果没有操作,所有的文档都已经提交了那么会如下图所示:
而当你对文件进行编写操作之后,再输入git status 会出现如下情况:
此时可以通过添加命令将工作区中修改过的文档添加到暂存区(例如:输入:git add a.txt),之后在查看状态如下图:
此时已经将文件进入到暂存区,接下来就是将文件提交到当前分支(由于此时只有一个分支,也就是master,所以不存在区别。分支的具体介绍后面会进行总结),如下图:
其中“add a.txt” 为提示信息 ,master表示当前分支,7abe0c2 是版本号
此时再查看状态可得到下图:
至此,一个文件从创建到提交到当前分支就已经完全完成了,接下来就是将本地的分支推送到远程库中
其命令为:git push 【服务器名】【分支名】
注:服务器名就是在创建链接的时候命名的那个,默认的origin。而分支名,就是Github服务器中已经建立了的分支名,默认master(换句话说,你可以推送到任何一个分支,只要你有权限)
这里推送的时候需要输入你的ssh key 创建时候定义的密码,之后得到下图:
到此为止,基础的Github使用就总结完了。
最后说一点,如果是多人合作一个工程,每次工作之前建议先使用:git pull 获取最新的提交结果,避免不必要的冲突从而浪费时间
今天只是总结了一点基础,后面会对不同的点进行详细的总结介绍