深入Git
一.远程仓库
(1.远程仓库你可以理解为一个中央服务器,这里推荐使用GitHub,为什么?因为它全球最大的社区之一,免费提供此项服务。如何搭建关联,这里我就不介绍了,推荐一下大明的教程http://blog.sina.com.cn/s/blog_6e572cd60101qls0.html。
(2.添加远程库
个人认为创建一个与本地相关联的远程库还是有必要的,毕竟安全一些,虽然你的项目会直接开源放在gitHub中,但对于一下小的项目这个备份也是很需要的,如果要不开源,可以去开一个私人服务或者自己搭建一个Git服务器。
实现:现在GItHub中新建一个C(GitHub上工作库名字)要关联一个远程库,使用命令git remote add A(远程数据库名) git@github.com:B(你的GitHub用户名)/C.git;关联后,第一次推送使用命令git push -u A master(本地的所有内容);此后,每次本地提交后,只要有必要,就可以使用命令git push A master推送最新修改。(A、B、C知识代号而已)
现在就是讲,你怎么将远程数据库克隆到本地?
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。如git clone git@github.com:B/C.git。
二.分支管理
(1.什么是分支管理?简单来说就是给自己开一个私人的分支,别人看不到。有什么用?一个项目有多个人进行开发,当你的那部分没有完成,但你必须要每天提交保存进度,而别人可能从库中提取你的提交,但功能没做好,别人就没法进行工作。但当你有了分支,那就他先做他的,我先做我的,互不影响,做完了在提交给中央服务器。这样就安全快捷。
(2.常规的操作:
创建分支:git branch 分支名(也可以是创建并却换到新的分支:git checkout -b 分支名)
查看分支:git branch
切换分支:git checkout 分支名
合并某分支到当前分支:git merge 某个分支名
删除分支: git branch -d 分支名
(3.出现冲突
为什么会出现冲突?简单来说就是你的分支修改后add并commit提交之后,切到另一个分支,又修改提交,接着进行合并,就会出现冲突。我的理解就是相当于指针指向相同位置,但合并的内容不同,出现冲突。
怎么办?简单有冲突就解决冲突,直接在此分支再次修改之后提交,这样两指针指向的位置就不同。
(4.分支管理
一般开发中都有一个主支来推送最新的版本,工作一般是使用其他的分支,你和你的小伙伴一起在这些其他分支上工作,时不时的合并到主支上,这是就不好知道已经到哪个版本了,这样不利于开发。所以我们可以是使用 git merge --no-ff -m "修改的信息" 子分支名 。这样再用 git log --graph --pretty=online --abbrev-commit 就能很好的看看到你的合并的历史记录了。
(5.Bug分支----(这个里面我还有点问题没解决,等解决了一并发上来)
顾名思义就是建立一个临时分支管理Bug的。这里就可能出现一个问题就是你现在正在一个分支上做一项工作,还没完成,但出现了bug,你不得不去调试呀。这时就需要保存你现在工作的分支上的工作。使用的是: git stas 保存现场(开始侦探游戏了),接下来你要就要去回到主支上建立临时的分支来处理BUG(开始调查嫌疑人),处理完了(抓捕嫌疑人)。接下来就是回来你原来工作的分支(返回现场),恢复现场:先使用git stash list列出现场表,接着:git stash pop (恢复现场并删除这个记录,相当于进行了git stash apply 现场表的id ,接着删除: git stash drop)。如何你有多个现场,你要恢复到某个现场,就只能使用 git stash apply id 来找到这个现场,这是一定要记住删除这个保存的现场,不然会一直留在这个分支。
(6.feature分支
每添加一个新功能,最好新建一个feature分支。为什么?我个人的理解就是feature建立的分支,在使用删除的时候,如果你没有合并,那么就会出现提示信息(让你选择是否删除)。这点十分的舒服,当你建立多个分支是你忘记哪些是bug分支,那些事功能分支,那些事临时分支。那就是十分的麻烦。
建立feature分支:git
------------------------------------------------------------------
没写完就发出去了,抱歉!后面会及时补全的。