用git有一段时间了,但只是照着sdebootcamp上的照做,对于其原理和命令的含义一知半解。今天等待code review的间隙,终于有空系统学习一下,并搞清楚他的工作机制。特别鸣谢这个博客:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743862006503a1c5bf5a783434581661a3cc2084efa000。
首先,Git是用于版本控制的工具,版本控制简单说来,就是记录下每次修改,在开发过程中,用Git来为工程添砖加瓦。版本控制的基本工程就是提交版本,同步版本,撤销提交等等。
我理解的Git原理是这样的:
第一步:通常是从远程同步过来的一个原始版本,或者就是自己新建的一个版本,无论如何,初始状态时本地有一个版本,远程有一个版本。
第二步:在本地版本中做一些修改。Git的版本控制在本地有两个区域,暂存区域和提交的版本区域。对于任何修改,用git add <file>将文件提交到暂存区域,然后用git commit将所有暂存区域的文件修改提交到本地版本区域。
第三步:在工作中,有些提交错了或者不合适需要撤销。
1、使用 git reset --hard <version-id>可以回退到本地的某个版本号,用git log可以查看提交历史和对应版本号
2、使用 git checkout --<file> 可以讲工作区中某个文件的修改丢弃掉,回退到暂存区或者本地版本区中的最近版本。
3、如果在暂存区要撤销掉这个文件,使用 git reset HEAD <filename>
4、要将本地版本库中的某个文件删除,使用 git rm <filename>
第四步:使用 git push将本地版本推送到远程仓库。
以上的这些内容支撑了我这几天在本地的git操作。但是还有很多内容需要学习。
很重要的一点就是branch的概念。
一个branch其实就是一系列提交所串成的一条线,有一个指针指向某个提交的节点。使用git checkout -b <branchname>可以在当前的branch上创建一个新的branch,其实就是new了一个指针指向当前的提交节点。以后所有的提交都基于此指针,这个指针指向新的提交节点,而本来的branch的指针依然停留在原来的地方。我觉得说不太清楚,需要用图辅助理解,还是参考开头的博客好了。。。
一般来说,我们新建一个branch,在此基础上进行开发,完成后,将这个branch合并到原来的branch上。原来的branch成为master,新建的branch称作dev,开发完成dev后,使用git branch master切换回master分支,然后使用git merge dev,将dev合并到master上。然后使用git branch -d dev将dev分支删除。
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
目前就先这样吧~还有标签管理等等内容,需要后续学习。