git

Git

Posted by 亏普 on 2017-08-07

安装配置

git安装

配置别名

创建Git仓库

git init

git clone

提交修改

git add&commit

git add

git commit

git log

git shortlog

追加修改

git commit –amend

当开发者提交了一个commit后,发现该commit有错,可以随时对这个commit进行修改,使用git commit –amend指令即可。通过这种方式可以修改commit,而不是通过新的commit来修正前一个错误的commit

查看代码仓库状态

git status:查看仓库状态

git diff :查看文件发生具体变化

git diff HEAD

比较提交节点差异,同理,通过指定不同的HEAD,例如HEAD^,HEAD^^,上次commit节点、上上次commit节点。

除了上面Git自带工具的diff操作,实际上Git还支持使用第三方的diff工具进行diff操作,如Meld、beyond compare

追溯历史版本

git log

gitk

安装gitk

工作区与暂存区

Git回退

chechout&reset

git checkout:用来还原一个代码仓库中的文件

修改文件之后,执行git add指令之前,如果执行checkout指令则会抛弃当前本地的所有修改,恢复到上次最后的提交版本。
如果修改文件并执行git add指令后继续修改文件,此时再执行checkout指令,查看代码仓库状态,可以发现在执行add指令将代码提交奥暂存区后,再修改该文件,此时如果继续执行checkout指令,则会将该文件恢复到执行add操作后的初始状态,即恢复add后的所有修改

回退版本

git reset

操作历史

git reflog

Git文件操作

git rm

文件暂存(待补充)

远程仓库

分支管理

创建分支

git checkout -b dev:创建分支并切换分支

git branch dev

git checkout dev

查看分支

git branch:查看当前本地所有分支

在当前分支上会多一个*,用来表示当前所处的分支,通过指定-r参数可以列出所有远程分支,或者使用-a参数列举所有本地和远程分支

合并分支

git merge dev

开发者切换到dev分支后,对内容进行修改,接下来执行add和commit操作,此时开发者再切换到master分支,查看当前修改,你会发现dev分支上之前做的修改在master分支上都没有生效,因为这两个是不同的分支,它们之间是完全独立不受影响的,所以我们切换到master分支,然后Merge分支dev到master主分支中

Merge与Rebase

在合并分支时,还有一种Rebase操作,它与Merge操作所实现的功能基本是一样的,唯一的区别是,使用Rebase操作后Git时间线会被进行合并,而Nerge操作不会

删除分支

git branch -d dev

查看远程分支

git remote

git remote -v:查看详细信息

推送分支

git push orgin dev

分支的管理思想

Git虽然是一个无中央集权的版本控制系统,但在一般开发过程中通常还是会指定一台服务器作为Git版本中央库,同时使用分支对中央库进行版本控制

分支的设置

在Git中央服务器上(origin),都会有一个默认的主分支(master),而一般的开发不会直接在主分支上进行,主分支永远用于打Tag和发布release版本,保证发出去的版本一定是完善的、已验证过的,而且在团队中,也只有Leader以上级别的开发者才有权限将其他分支的代码Merge到主分支,因此开发时,最少会建立一个develop分支,所有的最新开发进展都同步到develop分支

功能分支

在开发过程中,项目经常有一些需要紧急完成的功能或者需要紧急修复的bug,针对这些打断正常开发流程的事情,同样可以利用分支来进行处理,这些分支称之为功能分支或辅助分支,这些分支的管理与develop分支的处理基本类似,但要注意的是,一旦完成修改应该立刻删除这些分支,保证代码库的干净

Git图解

Tag

参考

在Android Studio 中使用Git

Android群英传神兵利器读书笔记——第二章:版本控制神器——Git