Git的学习
git是一种分布式版本控制系统,从这个称呼就不难看出它的两个特点:版本控制, 分布式管理:
版本控制
$ git init #初始化当前目录为git目录
在这个目录下会自动创建一个.git文件夹,在此有几个重要的概念:
.git目录为版本库,版本库中会维护着一个暂存区(stage)和各个工作分支(branch),在init目录下不包括.git目录为工作区(working directory)。
git的文件管理方法就是基于这三者来的:
$ git add filename #添加代码到stage中,注意多次提交同一个文件,后者会覆盖掉前者
$ git commit -m "一些说明" #将stage所有内容中推送到当前branch
你的所有推送到branch都会被记录下来
$ git log #查看当前版本及之前的commit记录
$ git reflog #查看你执行的所有commit
有了stage和branch,你可以有针对性地管理你的代码进度,你可以随时查看working directory,stage,branch三者内容的差异:
$ git diff [filename] #working directory与stage的区别
$ git checkout [-- filename] #撤销working directory相对于stage的修改
$ git diff HEAD [-- filename] #working directory与branch的区别
$ git reset HEAD [filename] #撤销working directory相对于branch的修改
$ git diff --cached #stage与branch的区别
注:HEAD是指向当前branch版本的指针,master是指向要push到远端的branch的指针(默认初始化建立的分支)
一般工作都不是在主分支(master branch)上工作的,而是新建一个分区,再合并:
$ git checkout -b branchname #创建新分区,并切换到新分区
<=>
$ git branch branchname #创建
$ git checkout branchname #切换
$ git merge branchname #合并分区(与master分区)
$ git branch -d branchname #删除分区
不仅可以在提交到stage后反悔,在commit之后也可以实现版本的回退
$ git reset -- hard commit_id #可由reflog获得commit_id,或者HEAD^,表示上一个版本,HEAD^^表示上上个,HEAD~num表示上num个
分布式管理
$ git remote add origin git@github.com:username/repositoryname #添加远程库
$ git push origin branchname #添加当前branch到远程库master中,可能会提示要先设置全局属性为simple
$ git push origin :branchname #删除远程分支branchname
$ git tag [tagname] [-m "some mark"] #创建标签
$ git push origin --tags #将tag push到github上
状态显示:
$ git tag #显示所有标签
$ git status #显示当前git状态
$ git branch [-a] #显示当前所有分支,-a表示包括远程库
3785

被折叠的 条评论
为什么被折叠?



