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里,注意拷贝时,换行处可能会引起错误,要把换行处的空格 ...
随机推荐
- SQL Server数据库基础编程
转载,查看原文 Ø Go批处理语句 用于同时执行多个语句 Ø 使用.切换数据库 use master go Ø 创建.删除数据库 方法1. --判断是否存在该数据库,存在就删除 if (exist ...
- [bzoj4247][挂饰] (动规+排序)
Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直 ...
- 常州模拟赛d5t3 appoint
分析:这道题比较奇葩.因为字符串没有swap函数,所以一个一个字符串交换只有30分.但是我们可以不用直接交换字符串,而是交换字符串的指针,相当于当前位置是哪一个字符串,每次交换int,可以拿60分. ...
- 使用C#执行PowerShell命令
按照网上的教程配置会发生SSL链接错误 该文章的最后使用了SSL来保证账户在连接服务器的时候不发生账户认证错误,但是我经过测试发现这个是不可行的,有一种更为简单的方法 首先要对服务器进行winrm设置 ...
- eclipse编译项目用maven编译问题
1.eclipse只是个ide开发环境,并没有编译器功能.没有编译器.eclipse编译项目只是调jdk本地的java编译器.maven是单独编译,eclipse可以调用maven编译, 在eclip ...
- php7.0升级到php7.1
$ add-apt-repository ppa:ondrej/php$ apt-get update$ apt-get upgrade php 来源:http://www.wuweixin.com/ ...
- c++中的set_new_handler和new_handler
当operator new申请一个内存失败的时候,它会进行如下的处理步骤: 1.如果存在客户指定的处理函数,则调用处理函数(new_handler),如果不存在则抛出一个异常. 2.继续申请内存 ...
- [Vue-rx] Cache Remote Data Requests with RxJS and Vue.js
A Promise invokes a function which stores a value that will be passed to a callback. So when you wra ...
- dhtmlx中添加一列(将相似button、下拉列表、输入框显示在一行上)
{ type: "label", list: [ { { type: "label", labelWidth: 55 }, { type: "newc ...
- starUML 2.5.1 for mac
http://www.macupdate.com/app/mac/55571/staruml/download 一直在windows下使用 star UML,占用资源少,简洁易用. Mac下也能够用了 ...