标签:
之前介绍了git的最核心功能游戏存档式的本地版本管理。这会我们介绍git剩下的两个核心功能:分支和远程仓库。
1.Git游戏存档进化版--Git分支
git分支的思想很有意思,git允许我们可以随时从现有游戏存档菜单(还记得这个比喻吗)中复制出一个或多个新的游戏菜单,这些新的游戏菜单都会继承以往的存档和文件,并且在每个游戏菜单上都可以接着进行存读档的操作,更厉害的是,在新建立的游戏存档上继续游戏(继续工作),存存取取后,还可以直接丢弃这个游戏存档或者瞬间与原始的游戏存档进行“合并”!。想想有什么用途吧,你打开游戏进行游戏主线玩的不可开交,突然发现有两个副本任务马上到了截止日期,你一时难以抽身,但又舍不得两个副本任务丰厚的报酬,于是你求两个好基友和你一起使用了git,你拉了两个分支给他们,让他们一人打一个副本,结束后合并两个人的分支,一瞬间,你既有了主线剧情的经历,也同时获得了两个副本奖励的金钱和经验,wow,迅速走上人生巅峰,就是这么神奇。
当然,天有不测风云,你的一个不靠谱的好基友在副本中死了100次,你辛辛苦苦攒的装备全部没有了,当好基友正心灰意冷的时候,你迅速的删掉了他的游戏分支,就当一切都没发生过就好,你潇洒的对他报以微笑。就是这么轻松。
千算万算还是出了差错,好基友在打副本1的时候使用了你唯一的回城卷轴,而回城卷轴在好基友2那里还在,现在你要开始合并分支了,可是git却提醒你git虽好但是不能违背大自然的规律,要求你处理一下这个逻辑上的矛盾,你毫不惊慌,你拿来好基友2的游戏存档,对比了一下,发现两者只有一处不同,就是回城卷轴的数量,于是你告诉git,这个回城卷轴我不要了,再次合并分支,成功!
看懂了吗?那你差不多就已经了解到git分支功能的意义所在,为了避免你忘记,我在这里再帮你简单梳理一下:
(1)开发新功能时,可从master分支上拉一个分支,在此分支上一方面享有主分支的所有文件资源,一方面独立的开发新的功能模块,如果开发成功,合并分支,增加功能,如果开发失败,删除分支,一切都可以当做没发生过。
(2)正在某分支工作时接收另一个任务,保存工作台(之后会告诉你怎么做),新开分支完成任务,合并,回到分支,恢复工作台继续工作。
(3)当多人合作时,多个分支合并,git会检查各分支与主分支是否有冲突,比如分支1基于修改了主分支的A文件,但分支2却基于A文件的源文件,那么git会让你自己处理这个错误,之后再合并。
好了,到这里大致讲完了git分支功能的原理,现在我们展示一下具体的操作指令:
(1)创建分支:$ git branch <branch name>
(2)切换分支:$ git checkout <branch name>
(3)创建并转入分支:$ git checkout -b <branch name>
(4)查看分支:$ git branch
(5)删除分支:$ git checkout -d <branch name>
(6)强行删除分支:$ git checkout -D <branch name>
(7)合并分支:$ git merge <branch name>(合并某分支到当前分支)
(8)查看分支合并图:$ git log --graph
(9)保存工作现场:$ git stash
(10)还原工作现场:$ git stash pop
希望你能明白,分支是个好东西,但你要知道什么时候用它,什么时候则不用。
2.Git远程仓库
介绍完了git强大的分支功能,我们接着介绍git另一个强大的功能,远程仓库。
其实顾名就可以思义,即git允许我们将git仓库推送到远程,这有什么好处呢?主要有以下两个方面:
git远程仓库的管理和本地仓库别无二致,所以下面只简单介绍一下和远程仓库有关的git指令:
(1)本地仓库关联至远程:$ git remote add origin <url>
(2)克隆远程仓库至本地:$ git clone <url>
(3)查看远程库的信息:$ git remote -v
(4)从远程仓库更新文件:$ git pull
(5)将本地修改推送至远程仓库:$ git push (通过使用-u origin master推送至master分支并合并)
等等,还没完,我说过分支远程仓库和多人开发的事对吧,那应该还有几个相关的git指令需要交代:
由于本地新建的分支如果不推送到远程,对其他人而言是不可见的,因此我们还要熟悉几个有关推送本地分支的git指令:
(1)从本地推送分支:$ git push origin <branch-name>(如果推送失败,需要先用git pull抓取远程的新提交)
(2)在本地创建与远程分支对应的分支:$ git checkout -b <branch name> origin/<branch name>
(3)建立本地分支和远程分支的关联:$ git branch --set-upstream <branch-name> origin/<branch name>
好了,至此我已经说完了一遍git相关的重要指令及其意义。这篇文章使我重头过了一遍相关的知识点,也希望对你也有帮助。
(_[~_)
标签:
原文地址:http://www.cnblogs.com/libinfs/p/5329684.html