git下
----------- 1. 分支管理策略
1)master分支
非常稳定的,只用来发布新版本,平时不在上面干活
2)dev分支
不稳定的,主要在上面干活,每个人都有自己的分支,时不时的往dev分支上合并 通常,合并分支时,如果可能,Git会用`Fast forward`模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
> git log --graph --pretty=oneline --abbrev-commit 2. Bug分支
你目前在dev分支上工作,工作到一半,但突然有一个紧急的bug需要修复,可以先保存你的工作现场,修复完bug后,在切回来。
步骤:
当前在dev分支上:
git stash # 把当前工作现场“储藏”起来
切换到要修复bug的分支(假定master):
git checkout master
git checkout -b issue-101
.... 修复问题
git add filename
git commit filename
把修改合并到修复的分支:
git checkout master
git merge --no-ff -m "merge fix 101 modification" issue-101
git branch -D issue-101
切换回工作现场:
git checkout dev
git stash list # 查看之前保存了哪些工作现场
git stash drop
两种恢复方式:
1)git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除
git stash apply stash@{0}
git stash drop stash@{0}
2)git stash pop,恢复的同时把stash内容也删了 3. Feature分支
与bug分支类似
两条命令:
1)git branch -d dev_name # 已经合并完的分支可以使用此命令删除
2)git branch -d dev_name # 强制删除分支(未合并的也可以) 4. 多人协作
多个人在同一分支上工作,如何正确的合并文件?
两种情况:
**1)你和他人同时修改同一个文件,他人修改完成,提前推送到远程,如何提交你的修改**
详细步骤:
1)试图用git push origin <branch-name>推送自己的修改;
2)如果推送失败,则因为远程分支比你的本地更新,需要先用git pull拉取远程最新的版本;
3)如果合并有冲突,则解决冲突,并在本地提交;
4)没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送
**2)你和他人操作的不是同一个文件
详细步骤:
1)试图用git push origin <branch-name>推送自己的修改;
2)如果推送失败,先用git pull拉取远程最新的版本;
3)git add . # 添加本地的全部修改到暂存区
4)git commit -m "说明信息" # 提交更改至本地
5)git push origin <branch-name>推送本地分支至远程
提交更改前,都要先git pull拉取远程最新版本 当从远程克隆时,Git自动把本地的master分支与远程的master分支对应起来,远程仓库的默认名称是origin。
查看远程库信息:
git remote -v
推送分支:
git push origin master 把本地的mater分支推送到远程对应的master分支上
git push origin dev 把本地的dev分支推送到远程对应的dev分支(远程没有dev分支会自动创建一个dev分支)
创建远程origin的dev分支到本地
git checkout -b dev origin/dev
指定本地dev分支与远程origin/dev分支的链接
git branch --set-upstream-to origin/dev dev
或
git branch --track origin/dev dev 5. 标签
tag是一个容易记住的有意义的名字,它跟某个commit绑定在一起。
打标签:
git tag tag_name # 默认打在最新提交的commit上,当前HEAD的指向
git tag # 查看标签
git show tag_name # 查看标签详细信息
在指定的commit上打标签:
git log --pretty=oneline # 查看commit id
git log -a tag_name -m "explain content" commit_id
推送标签:
git push origin tag_name # 推送一个指定的标签
git push origin --tags # 推送全部尚未推送到远程的本地标签
删除标签:
1) 标签尚未推送到远程
git tag -d tag_name
2)标签已推送到远程
git tag -d tag_name
git push origin :refs/tags/tag_name 6. Rebase
解决查看log分支多,混乱的问题;遗留
git下的更多相关文章
- git下的团队合作模型及git基础知识汇集
https://www.atlassian.com/git/tutorials/syncing/git-fetch Syncing svn使用单个中央库来作为开发者之间沟通的桥梁,而协同合作是通过在开 ...
- vs推送git失败,修改git下config的Log
一开始写完程序套推送到Git中,然后就来了一下,下面的异常: 异常1 发布到远程存储库时遇到错误: Git failed with a fatal error. fatal: HttpRequestE ...
- Git下基本命令操作
提前准备好一个文件夹,并且进入该文件夹. 1.clone Github 上的Repository,如: git clone git@github.com:Git账号用户名/项目名称.git 2.仓库初 ...
- Git下的.DS_Store文件
.DS_Store 是什么 使用 Mac 的用户可能会注意到,系统经常会自动在每个目录生成一个隐藏的 .DS_Store 文件..DS_Store(英文全称 Desktop Services Stor ...
- 多人开发时Git下冲突的产生和解决
冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动m ...
- Git 学习笔记--Git下的冲突解决
冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动m ...
- php与Git下基于webhook的自动化部署
前言 2018年第一篇文章,没啥技术含量,权当笔记 我们一般都会用git或者svn来管理我们的代码 每次代码更新后还要手动的去把服务器上的代码也更新一遍 项目小了还好 项目大了着实浪费时间 要是服务器 ...
- Git下的冲突解决【转】
本文转载自:http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html 冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是m ...
- ubuntu git 下添加 ssh
1 ssh-keygen 产生公钥和私钥 2 cat ~/.ssh/id_rsa.pub 复制出对应的公钥, 3 拷贝到git上的ssh-key里,注意拷贝时,换行处可能会引起错误,要把换行处的空格 ...
随机推荐
- python3支持excel读写
1.安装setuptools-17.0.tar.gz cmd 进入命令行 cd C:\Users\vivi\Desktop\pythonforexcel\setuptools-17.0\setupto ...
- Leetcode题目practice
目录 Leetcode题目解答 1. 删除最外层的括号 2. 两数之和 3. 宝石与石头 4. 移除元素 5.删除排序数组中的重复项 6.寻找两个有序数组的中位数 7.盛最多水的容器 8.存在重复元素 ...
- 08 Python基础数据结构
目录: 1) 列表 2) 元组 3) 字符串 4) bytes 5) bytearray 6) 字典 7) 集合 8) 冻集合 """1. 列表特性2. 创建3. 增加4 ...
- SpringMVC中@Controller和@RequestMapping用法和其他常用注解(转)
一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...
- react入门----组件的基础用法
1.组件 <!-- React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样,在网页中插入这个组件.React.createClass 方法就用于生成一个组件类 ...
- 负载均衡之Ocelot+Consul(WebAPI注册服务)
上一篇 负载均衡之Ocelot+Consul(文件配置注册服务),介绍了如何通过json文件注册服务,本篇将学习如何通过web api 注册服务. 在展开学习过程之前,且先总结一下 consul服 ...
- 【10】AngularJS SQL
AngularJS SQL 使用 PHP 从 MySQL 中获取数据 <div ng-app="myApp" ng-controller="customersCtr ...
- selectByExampleWithBLOBs-----搜索结果包含大字段类型----搜索结果包含大字段类型
http://www.jb51.net/article/121482.htm mybatis generator 使用方法教程(生成带注释的实体类)
- HDU 1224 无环有向最长路
用bellman_ford的方法,将中间不断取较小值,修改为取较大值就可以了 #include <cstdio> #include <cstring> #include < ...
- [luoguP1474] 货币系统 Money Systems(背包)
传送门 背包 ——代码 #include <cstdio> #include <iostream> #define LL long long int v, n; LL f[10 ...