git是一种分布式版本控制系统,对于代码或者文档的版本管理带来很大方便。
目前用的比较多的svn是一种集中式版本控制系统。
分布式版本控制系统的优点是:每一个用户在本地都有一个版本库,对代码或者文档的修改、提交等操作只需要在本地完成即可,仅当多人协作需要合并时需要将个人的修改push到一个“中央服务器”中,然后执行合并操作;
而集中式版本控制系统每次需要修改代码或文档时都需要从“中央服务器”中获取,然后做相应的修改,然后提交到“中央服务器”,对于网速不是很给力的用户来说简直是噩梦。
git的各种操作命令整理如下:
1.首先是本地的版本管理,包括版本库的创建,版本的添加、删除、撤销,查看修改记录,查看版本库状态等。
(1)git init :在本地创建一个版本库。具体的操作是新建一个文件夹,然后cd到该文件夹下,输入该命令即可,可以通过ls -al查看
有一 个.git的隐藏文件
(2)git add <file>:将一个文件从工作区(本地)添加到版本库的暂存区。具体操作是,在修改完某一个文件(假设为test.cpp)后
,
输入
git add test.cpp即可。
(3)git commit -m “xxx”:将刚才add的文件从暂存区提交到版本库的分支中。具体操作是,git commit -m "...",其中双引号内部是
修改的一些记录。
从上面可以看出:当修改一个文件后,要提交到版本库必须需要两步:git add <file> 和git commit -m “xxx”。
(4)git log:查看版本修改记录。当输入git log时会列出修改的日期、修改人、修改日志(git commit时写入的话)
(5)git status:查看当前版本库状态。当输入该命令后会列出当前版本库状态,包括已经被修改但是没有提交(add+commit)的文件。
(6)git reset --hard:版本回退。git中HEAD指针指向的是当前版本,因此git reset HEAD^为回到上一个版本,git reset HEAD^^为回
到上
上个版本,git reset --hard HEAD~100为回到往前100个版本。如果想要回到某一个版本,则首先需要获取那个版
本的id,然后git reset --hard<id>即可。
(7)git reflog:获取历史版本的id号,为git reset --hard 提供支持。
(9)git checkout -- <file>:撤销file文件的修改(注意 -- 两边都是空格)。如果该文件有修改在版本库的暂存区,则执行该操作后
退
回到暂存区之后的状态
如果没有在暂存区,则执行该操作后就退回到和之前版本库状态一致。
(10)git rm <file> :git库中删除file文件。当在工作区中利用rm命令删除了一个文件后,需要将该操作同步到git版本库中,即使用该
操作,然后执行 git commit -m “”将该操作提交。
2.当本地文件版本比较固定后,就需要将该版本提交到远程的版本库中,就需要版本远程库的连接、版本的推送。
(1)git remote add origin git@github.com:xxx/xxx.git:将本地版本库与远程库相连接。
(2)git push origin master:将本地master分支的版本推送到远程库中,也可推送其他分支到远程库,git push origin xxx.
(3)git clone git@github.com:xxx/xxx.git :从远程库克隆版本到本地。
(4)git pull origin xxx:从远程分支xxx上提取版本,前提是本地当前分支与远程的xxx分支已经建立连接,如果没有则需使用
git branch --set-upstream branch-name origin/branch-name 建立连接。
以上是git库的基本操作,关于git分支的部分没有涉及,待补充。