Git的日常处理流程
前提
本地有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步,参考自
https://stackoverflow.com/questions/18857570/git-pull-without-checkout
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的指针。
Git的日常处理流程的更多相关文章
- git概念及工作流程详解
		
git概念及工作流程详解 既然我们已经把gitlab安装完毕[当然这是非必要条件],我们就可以使用git来管理自己的项目了,前文也多多少少提及到git的基本命令,本文就先简单对比下SVN与git的区别 ...
 - Git基本概念,流程,分支,标签及常用命令
		
Git基本概念,流程,分支,标签及常用命令 Git一张图 Git基本概念 仓库(Repository) 分支(Branch) Git工作流程 Git分支管理(branch) 列出分支 删除分支 分支合 ...
 - 从零开始使用git第二篇:git的日常操作
		
从零开始使用git 第二篇:git的日常操作 第一篇:从零开始使用git第一篇:下载安装配置 第二篇:从零开始使用git第二篇:git实践操作 第三篇:从零开始使用git第三篇:git撤销操作.分支操 ...
 - 如何让Git适应敏捷开发流程?
		
一旦涉及到版本控制系统,Git实际上代表敏捷开发的水平.Git作为一款强大的开源系统,有较强的灵活性,可以按需匹配任何开发团队的工作流程.而这种分布式相比较集中式来说,可以赋予系统更好的性能特征,且允 ...
 - Jenkins自动化部署服务器及git 提交及git tag标签版本更新流程,超详细!
		
工作中部署的项目和服务器较多时就用上了Jenkins进行自动部署 优点 不用在连接单独的服务器进行更新项目,再启动项目服务的操作了 更新部署都是自动的,比较方便.适合大批量的部署 一.git流程部分 ...
 - git的日常使用(补课)
		
使用git的一些反响 如果在github上做一个仓库来使用的话... 首先手动在github上创建一个空的仓库,默认没有任何东西的 使用git的命令 git pull 创建的github仓库地址 能把 ...
 - 关于git你日常工作中会用到的一些东西
		
前言 git是一个版本控制工具, 版本控制主要的好处有三点: 从当前版本回退到任意版本 查看历史版本 对比两个版本差异 git 相关术语 repository 仓库 branch 分支 summary ...
 - Git和Code Review流程
		
Code Review流程1.根据开发任务,建立git分支, 分支名称模式为feature/任务名,比如关于API相关的一项任务,建立分支feature/api.git checkout -b fea ...
 - git 一般的开发流程中的代码管理
		
一般的开发流程中的代码管理 1. 从版本库中下载代码 git clone ssh://wenbin@192.168.1.3:29418/mustang-web 2. 针对某个feature(比如ins ...
 
随机推荐
- BZOJ 3689 异或之 (可持久化01Trie+堆)
			
题目大意:给你一个序列,求出第$K$大的两两异或值 先建出来可持久化$01Trie$ 用一个$set$/堆存结构体,存某个异或对$<i,j>$的第二关键字$j$,以及$ai\;xor\;a ...
 - Maven搭建之后的设置
			
Maven搭建之后的设置 1,设置环境变量M2_HOME=D:\Java\apache-maven-3.3.9, MAVEN_OPTS=-Xms128m -Xmx512m 在path中,添加D:\Ja ...
 - ScrollView反弹效果的实现
			
发现非常多APP的界面都能够滑动,QQ.微信等等,自己琢磨了下.效果例如以下: 代码:ScrollView package com.wsj.wsjdemo; import android.conten ...
 - [读书]Python学习手冊--属性管理1
			
属性管理-特性 一般开发这不必关心属性的实现.对工具的构建这来说,了解这一块对API的灵活性有帮助. 大多数情况下,属性位于对象自身之中.或者继承自对象所派生自的一个类. ----python学习手冊 ...
 - linux清除邮件队列
			
[root@localhost mail]#tmp=`mailq | grep -E "root" | awk '{print $1}'` [root@localhost mail ...
 - [android]DES/3DES/AES加密方式
			
DES 支持8位加密解密,3Des支持24位,Aes支持32位.3Des是Des算法做三次.位数的单位是字节byte.不是bits. 3Des是把24位分成3组.第一组八位用来加密,第二组8位用于解密 ...
 - MPI搭建简要教程
			
具体安装部署,能够參考 http://www.ibm.com/developerworks/cn/linux/l-cn-mpich2/,该教程将的比較具体. 注:不同版本号的 MPICH2对编译器以及 ...
 - matplotlib 可视化 —— 定制 matplotlib
			
1. matplotlibrc 文件 matplotlib使用matplotlibrc [matplotlib resource configurations] 配置文件来自定义各种属性,我们称之为 ...
 - python 3.x 学习笔记5  (装饰器)
			
1.装饰器: 本质是函数,(装饰其他函数)就是为其他函数添加附加功能 原则: 1)不能修改被装饰的函数的源代码 2)不能修改被装饰的函数的调用方式 2.实现装饰器知识储备: 1)函数即“变量” 2)高 ...
 - Android带弹性的View
			
在Android开发中ListView.ScrollView用到的频率相当高,可是一个优秀的应用我们能看到它里面的效果绝对不会那么死板,安卓原生的ListView和ScrollView都不能满足这个要 ...