开始:
把文件提交到版本库:
commit可以一次提交很多的文件,所以你可以多次add不同的文件然后再一次行commit。
版本回退:
Git仓库中有一个HEAD指针,指向的是当前版本,Git可以在版本的历史之间来回穿梭:git reset --hard commit-id
穿梭到前面的版本:可以使用git log查看提交日志,方便确定回退到哪一个版本。
回来未来的版本: 用git reflog查看历史命令
还原文件操作:
git checkout -- <filename> 会产生两种情况:1、在你做出修改后还没有添加到暂存区,现在撤销就是回到和版本库一摸一样的状态。 2、添加到了暂存区,又作了修改,现在撤销就是回到添加到暂存区后的状态
总之就是可以回到最近一次git commit 或git add 时的状态
撤销修改:
添加到了暂存区还没有提交,可以使用git reset HEAD <filename>可以把暂存区的修改撤销掉,重新放回到工作区。
删除文件:
在文件管理器中可以直接rm <filename>但是这时候工作区和版本库就不一致了
两个选择:1、确定要从版本库中删除该文件,就用git rm <filename>进行删除, 并且进行git commit。 2、删错了,那么版本库中还是存在的,可以使用git checkout -- <filename>将误删的文件恢复到最新版本。
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 这是将两步合成了一步1、git branch dev:创建dev分支 2、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 如果有冲突按照上面的方法解决冲突
原文:https://www.cnblogs.com/tulintao/p/11024262.html