一、把文件提交到版本库:git
二、版本回退:github
三、还原文件操做:spa
四、撤销修改:指针
五、删除文件:日志
六、添加远程库:开发
七、从远程库克隆:rem
八、建立和合并分支:it
九、解决冲突:ast
十、分支管理:stream
十一、Bug分支:
十二、feature分支:
1三、多人协做:
开始:
把文件提交到版本库:
commit能够一次提交不少的文件,因此你能够屡次add不一样的文件而后再一次行commit。
版本回退:
Git仓库中有一个HEAD指针,指向的是当前版本,Git能够在版本的历史之间来回穿梭:git reset --hard commit-id
穿梭到前面的版本:可使用git log查看提交日志,方便肯定回退到哪个版本。
回来将来的版本: 用git reflog查看历史命令
还原文件操做:
git checkout -- <filename> 会产生两种状况:一、在你作出修改后尚未添加到暂存区,如今撤销就是回到和版本库一摸同样的状态。 二、添加到了暂存区,又做了修改,如今撤销就是回到添加到暂存区后的状态
总之就是能够回到最近一次git commit 或git add 时的状态
撤销修改:
添加到了暂存区尚未提交,可使用git reset HEAD <filename>能够把暂存区的修改撤销掉,从新放回到工做区。
删除文件:
在文件管理器中能够直接rm <filename>可是这时候工做区和版本库就不一致了
两个选择:一、肯定要从版本库中删除该文件,就用git rm <filename>进行删除, 而且进行git commit。 二、删错了,那么版本库中仍是存在的,可使用git checkout -- <filename>将误删的文件恢复到最新版本。
删除GitHub上的文件:git rm -r --cached <文件名> 完成这步操做以后还须要将此次操做进行一次commit,而后才能完成删除的整个过程
git rm用于删除文件,若是文件已经被提交到了版本库,那没必要担忧误删,可是只会恢复到最新的一次提交,会丢失最近一次提交后修改的内容。
添加远程库:
因为刚开始远程库是空白的,因此第一次推送master时要加上-u,以后Git不但会把本地的master分支上的内容推送到远程新的master分支,还会吧本地和远程链接起来,之后再推送就能够git push origin master
从远程库克隆:
git clone git@github.com:帐户名/仓库名.git
建立和合并分支:
一开始master是一条线,Git用master指向最新提交,再用HEAD来指向master。每次提交master都会迁移一步,随着不断提交,master分支会愈来愈长。
建立分支:建立一个dev分支并切换到dev分支:git checkout -b dev 这是将两步合成了一步一、git branch dev:建立dev分支 二、git checkout dev :切换到dev分支
建立完成分支以后,进行你想要进行的一些修改,而后再切回到master分支
合并分支:git merge + <分支名>用于合并指定的分支,直接将master指向了dev分支,在完成以后就能够删除dev分支了:git branch -d dev
解决冲突:
当Git没法自动合并分支时,必须手动进行合并,解决以后再进行提交,合并完成。(其实就是把Git合并失败的文件手动编辑为咱们但愿的文件,再进行提交)
git log --graph --pretty=oneline -abbrev-commit :查看分支合并图
分支管理:
Fast Forward模式:这种方式删除分支会丢掉分支信息(Git默认的就是使用的这种方式)
如何要禁止Fast Forwar? Git会在merge时生成一个新的commit,这就能够从历史上看出提交的信息了。
建立dev分支
修改文件并提交新的commit
切回到master(主分支)
最后进行合并分支git merge --no-ff -m"" dev
首先master应该是很是稳定的,仅是用来发布最新的版本,每一个人都应该拥有属于本身的分支,而后在dev上进行干活。
Bug分支:
当出现Bug时,这时候手头上的工做也尚未完成,能够先git stash一下,而后去修改Bug,修复完成后,在git stash pop回到工做现场
feature分支:
开发新的功能最好新建一个feature分支。
若是要丢弃一个没有被合并过的分支,能够用git branch -D <分支名> 来进行强行删除
多人协做:
从本地分支推送:git push origin branch-name 若是失败的话能够先git pull 一下抓去远程的最新提交。
在本地建立和远程分支对应的分支:git checkout -b branch-name origin/branch-name 本地分支最好和远程分支名称保持一致
创建本地分支和远程分支的关联:git branch --set-upstream branch-name origin/branch-name
从远程抓取分支,用git pull 若是有冲突按照上面的方法解决冲突