HTML5技术

记录我学github的路程(三) - xcywt

字号+ 作者:H5之家 来源:H5之家 2016-01-06 09:25 我要评论( )

2015-12-22 更新 一、 Bug分支 1,假设如下场景,你正在dev分支工作,突然接到一个修复代号为101的bug的任务时,dev的东西还没不能提交,但是bug需要马上修复。 Git提供了一个stash功能,可以把当前工作现场存储起来,等以后恢复现场后继续工作。 2,使用方

2015-12-22 更新

一、Bug分支

1,假设如下场景,你正在dev分支工作,突然接到一个修复代号为101的bug的任务时,dev的东西还没不能提交,但是bug需要马上修复。

Git提供了一个stash功能,可以把当前工作现场存储起来,等以后恢复现场后继续工作。

2,使用方法:

$ git stash //  类似于保护现场

注:执行上面时可能会出现这个错,no local changes to save,有可能是没有切换到dev分支,或者切换后没有在工作区进行修改,总之,多试试

然后切换回需要的分支进行修复,这里假设是master分支

$ git checkout master

再从master创建临时分支

$ git checkout -b issue-101

这里进行修改,并提交

$ git add readme.txt

$ git commit -m "fix bug 101"

这里就算是修复完成了,然后切换回master分支,完成合并,最后删除 issue-101 分支

$ git checkout master

$ git merge --no-ff -m "merged bug fix 101" issue-101  // 合并

$ git branch -d issue-101

到这里就修复完成了,切换回dev分支

$ git checkout dev

$ git status  // 可以查看一下工作区是干净的

查看刚才的工作现场

$ git stash list  //   可以看到工作现场还在,git把stash内容存在某个地方了,但是需要恢复,有两个方法

(1) $ git stash pop   // 恢复的同时把stash内容也删了

(2) $ git stash apply // 恢复后,stash内容并不是删除,需要 $ git stash drop 来删除

删除后可以再次查看一下

$ git stash list

2,可以多次stash,恢复的时候先用$ git stash list 查看,然后恢复到指定的stash,如下:

$ git stash apply stash@{0}

 

4,小结:修复bug时,通过创建新的bug分支进行修复,然后合并,最后删除

手里有工作没有完成时,先把工作县城 git stash一下,然后去修复bug,修复完了再 git stash pop,回到工作现场。

 

2015-12-28  更新

Feature分支

1,添加新功能时,肯定不希望因为一些实验性质的代码把主分支搞乱了,所以,添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后删除该分支。

2,实例:假设你接到一个新任务,代号为vulcan

(1)准备开发: $ git checkout -b feature-vulcan

(2)5分钟后,开发完毕,查看一下 $ git status

(3)切回dev目录,$ git checkout dev  若一切顺利,feature分支和bug分支是蕾丝的,合并然后删除

(4)此时,新功能要取消,就要删除这个分支 $ git branch -d feature-vulcan

这时候Git会提醒你,feature-vulcan还没有合并,若删除则会丢失修改。需要强行删除

$ git branch -D feature-vulcan  // 强行删除

 

   多人协作

 从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin

1,查看远程库的信息 $ git remote

$ git remote -v    //   查看更详细的信息

上面显示了可以抓取和推送的origin的地址,若没有推送权限,就看不到push的地址

 

  推送分支

1,推送分支:就是把该分支上的本地提交推送到远程库。推送时,要制定本地分支,这样Git就会把该本地分支推送到远程库对应的远程分支上

$ git push origin master  //   要推送dev分支,就把master换成dev

2,哪些分支需要推送,哪些不要呢,这里有几个原则:

(1)master分支是主分支,因此要时刻与远程同步

(2)dev分支是开发分支,团队成员都需要在上面工作,所以也要与远程同步

(3)bug分支只用于在本地修复bug,可以用不要推送到远程,除非老板要看看你到底修复了几个bug

(4)feature分支是否推送到远程,取决于你是否和你的小伙伴合作在上面开发

 

  抓取分支

1,多人协作时,大家都会往master和dev分支上推送各自的修改

2,模拟一个小伙伴,可以在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆。

实例:

先切换到另外一个目录:

这里开始克隆

再次提醒一下:要将SSH Key添加到GitHub,相当于告诉你的GitHub账户信任这台电脑,不知道准不准确,这里希望大神解答。

 友情提示:有时候 会出现这个错误

  fatal: Not a git repository (or any of the parent directories): .git

  提示说没有.git这样一个目录,解决办法如下:

  $ git init   就可以了

 

2016-01-03 更新   新的一年希望自己能变得更好

1,运行$ git clone  可能会出错:warning: You appear to have cloned an empty repository  // 克隆一个空目录

或者  fatal: destination path '.' already exists and is not an empty directory  // 目标路径已存在,且不为空

解决方法 : 参考自:

$ ls -a

$ rm .git/ -rf

不过我这样试了还是没用,只好把目录删除的东西全删了, 我是这样做的  

$ rm * -rf   //  这样后面再重新 git clone 一下就好了

 

//  git branch的一些用法,可以参考这个博客  

 

2,有的运行 Git clone之后,查看分支发现是空的,这时候要注意要切换进你clone过来的那个目录才可以看见分支,不要跟我一样傻逼似,哎

接上面的抓取分支

(1)当你克隆之后,默认只能看到本地的master分支,就像上面那个图一样

(2)现在,你的小伙伴要在dev分支下开发,就必须创建远程origin的dev分支到本地:

$ git checkout -b dev origin/dev

(3)这样,小伙伴就可以在dev上继续修改,然后时不时的把dev分支push到远程

$ git commit -m "add dev 20160103"

$ git push origin dev

(4)你的小伙伴已经向origin/dev分支推送了他的分支,而碰巧你也对同样的文件进行了修改并且推送:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 前端实现搜索记录功能也就是天猫app历史记录存储方便浏览 - 今天的代码你撸了嘛

    前端实现搜索记录功能也就是天猫app历史记录存储方便浏览 - 今天的代

    2017-04-12 14:00

  • GitHub开源:升讯威ADO.NET增强组件 sheng.ADO.NET.Plus V1.3 - sheng.chao

    GitHub开源:升讯威ADO.NET增强组件 sheng.ADO.NET.Plus V1.3 - shen

    2017-03-22 13:02

  • 记录Winform开发过程中遇到的情况 - 神雕爱大侠

    记录Winform开发过程中遇到的情况 - 神雕爱大侠

    2017-03-18 10:03

  • 【福利大放送】不止是Android,Github超高影响力开源大放送,学习开发必备教科书 - 南尘

    【福利大放送】不止是Android,Github超高影响力开源大放送,学习开

    2017-02-09 12:04

网友点评