博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git的日常处理流程
阅读量:6849 次
发布时间:2019-06-26

本文共 1960 字,大约阅读时间需要 6 分钟。

前提

本地有2个分支,一个是master,还有一个是local

master 默认追踪origin/master

local 通过git branch -u origin/master来映射

开发的时候,在local上,进行开发。master仅用于和remote进行同步

备注:origin只是一个remote的名字而已,一个repository可以和多个remote进行关联

 

情况1.早上到公司后,进行代码同步,本地的commit暂时不需要push到服务器

因为处于开发环境,所以,当前处于local分支

1.首先确认git status,确保本地的clean的状态

2.git fetch origin master:master

3.git status 

   3.1如果提示告诉你,可以fast-forward

          3.1.1      git merge master

这种情况,只在你本地没有commit的时候才发生

  3.2 local 和master发生了diverged

$ git status

On branch local
Your branch and 'origin/master' have diverged,
and have 1 and 10 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
nothing to commit, working tree clean

        3.2.1    git rebase master  

$ git rebase master

First, rewinding head to replay your work on top of it...
Applying: local configuration

         如果遇到冲突的话,用TortoiseGit处理好,Mark文件为resolved。然后回到命令行,git rebase --continue

4.可以继续开发了

 

其中第2步,参考自

 

git fetch <remote> <srcBranch>:<destBranch>

 

情况2.local 分支有一些*.config 文件进行了提交,之后,还有一些有效的需要push到服务器的commit

 当前处于local分支

1.git status确保clean状态

$ git status

On branch local
nothing to commit, working tree clean

2.git checkout master

3.git pull

4.使用TortoiseGit进行cherry-pick,将local分支上有效的commit拿到master分支

5.git push 

   5.1push失败

    在你pull之后,push之前,可能又有人往服务器push了新的commit

    处理方法,git fetch同步到最新的代码后,rebase origin/master。

    然后再次尝试push

6.使用TortoiseGit进行cherry-pick,将local分支上的config相关的commit拿到master分支上

7.使用TortoiseGit ,reset master 分支到origin/master

8.git checkout local

9.使用TortoiseGit,将local指向新生成的config的commit

10.可以继续开发了

11. remark

       上面使用的reset都是reset --hard,所以第一步的时候,需要确保git status是clean的状态

 

情况3.新的处理方式,和服务器进行代码交互

前提,在local分支进行代码开发,master分支用来和服务器同步。当前处于local分支

3.1 git checkout master

3.2 git pull

3.3 使用TortoiseGit进行cherry-pick

3.4 git push

3.5 git rebase master local

     此步骤,最新的git for windows,已经可以自动跳过内容相同的commit。

     此命令的意思,以master作为base,然后把local上的代码拼接过去

     此命令,执行完成后,会自动切换到local

 

 

参考

 

注意

因为涉及到local和master两个分支,所以在TortoiseGit查看日志的界面,务必勾选上左下角的All Branches。

最好能仔细看完progit第三章,深入理解branch的概念,branch仅仅是一个指向commit的指针。

 

转载地址:http://rorul.baihongyu.com/

你可能感兴趣的文章
iOS平台XML解析类库对比和安装说明
查看>>
各种纪念-好久没更新了
查看>>
渴望出差
查看>>
非常酷的国外网站导航设计案例欣赏
查看>>
xp sp3+iis 服务器不可用
查看>>
【windows phone】控件1
查看>>
使用curl抓取网页遇到HTTP跳转时得到多个HTTP头部的问题
查看>>
JQuery学习笔记
查看>>
UITextField的详细使用
查看>>
oracle触发器select into和cursor用法的区别
查看>>
TortoiseGit + msysgit 记住帐号密码方法及使用密匙的方法
查看>>
Python中的else
查看>>
zend_db连接mysql(附完整代码)(转)
查看>>
五个人二个月为什么不等于十个人一个月
查看>>
matlab 与 VC 混编函数参数传递<2>
查看>>
Silverlight for Windows Phone开发系列课程
查看>>
Ajax经典交互讲解
查看>>
如何让windows更高效?
查看>>
windows 搭建 subversion+TortoiseSVN
查看>>
windows8安装xna4.0不能开发Xbox和PC端游戏的解决办法
查看>>