Git 是一种版本控制工具。我们的代码是集中式管理,服务器上的代码我们叫它主版本,我们的开发人员都能对主版本进行更改,为了便于管理,我们就需要git工具为我们做版本控制。
涉及名词: 远程仓库(远程分支)、本地仓库(本地分支)、commit、暂存区、工作目录。我们来通过一个例子来解释这些名词。
假设初始代码为:
-abcd
这段代码就是远程服务器上我们的代码,大家都可以看到,而且它能正常工作,我们叫它远程分支。我们不能直接对其进行更改,而是先需要保证我们的新增或者删除的代码可以编译通过,且可以成功解决问题,才可以把这笔修改提交到远程分支上。所以我们这样做:
-复制一份远程仓库的代码到本地,我们可以叫它本地仓库
-我们在本地仓库中加入我们的修改,例如+ef,这些新的修改所在的文件或目录我们就叫工作目录。
-abcdef
-在确认新增的代码可以编译通过且生效之后,将这些修改放入缓存区准备提交,再次确认要提交的文件。
-把缓存区的代码打包成commit,提交到gerrit上
-经过review,合入代码
常用git命令:
-git add . / git add <filename> //把 所有/当指定文件 加入缓存区
-git commit . //把缓存区文件打包成新的commit
-git reset . / git reset <filename> //把缓存区的 所有文件/指定文件 拿回工作区
-git reset ~HEAD //把最近一次的commit的文件拿回工作区
-git commit . --amend //把缓存区内的文件追加到上一个commit(不生成新commit)
-git push korg HEAD:refs/for/<branch> //把本地分支的修改push到远程分支上
-git diff //比较工作区与暂存区的差异
-git log //查看所有commit
-git pull //把远程分支的代码拉取到本地
-git apply <diffFlie> //把diff文件的内容识别到本地分支上
-git checkout ./<filename> //把工作区的 所有/指定文件 还原成未修改版本
-git show <commitID> //显示指定commit的详细信息
-git branch //查看当前所在分支
-git blame -L <startLine,endLine> <filename> //查看指定代码是哪个commit提交的
repo介绍
谷歌用Python脚本写的调用git的一个脚本,把git仓库统一管理起来的工具。
repo常用命令:
-repo sync -c -j4 //更新代码
-repo start dev --all //创建本地分支
-repo upload . //把代码提交到gerrit
-repo for all -c ‘git reset --hard HEAD’ //所有代码执行git命令,回退到HEAD