下面的内容有(创建版本库;把文件提交到版本库;关联远程库;
从远程库克隆;推送分支)常用的命令。Xcode一般自带git,
1:创建版本库
选择一个合适的地方,创建一个空目录:$ mkdir workspace
$ cd workspace
$ pwd
pwd 命令用于显示当前目录。在我的Mac上,这个仓库位于/Users/apple/workspace
通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/apple/workspace/.git/
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository
2:把文件添加到版本库
第一步,先把文件放入/Users/apple/workspace/目录下,用命令git add告诉Git,把文件添加到仓库:
$ git add 文件夹的名字
第二步,用命令git commit告诉Git,把文件提交到仓库:
git commit -m "first commit"
简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件。
3:关于远程仓库
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,(一般默认隐藏的)如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第2步:登陆你自己的git,打开“SSH Keys”页面:
然后,点“ SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容:
为什么Git需要SSH Key呢?因为Git需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,Git只要知道了你的公钥,就可以确认只有你自己才能推送。
然后去关联远程库(git remote add origin后面跟的是你需要同步到的git的地址)
git remote add origin git@xxxxx.com:xxxx/xxxx.git
下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
从远程库克隆(要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone
命令克隆。Git支持多种协议,包括https
,但通过ssh
支持的原生git
协议速度最快。)
用命令git clone
后面跟的是你需要克隆的远程库地址
克隆一个本地库:
$ git clone git@xxx.com:xxxxx/xxx.git
当你从远程仓库克隆时,实际上Git自动把本地的master
分支和远程的master
分支对应起来了,并且,远程仓库的默认名称是origin
。
要查看远程库的信息,用git remote
:
$ git remote
origin
或者,用git remote -v
显示更详细的信息:
$ git remote -v
origin git@192.168.1.6:zhoudao_ios/workspace.git (fetch)
origin git@192.168.1.6:zhoudao_ios/workspace.git (push)
上面显示了可以抓取和推送的origin
的地址。如果没有推送权限,就看不到push的地址。
推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
$ git push origin master
如果要推送其他分支,比如dev
,就改成:
$ git push origin dev
版本回退。
git reflog master