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里,注意拷贝时,换行处可能会引起错误,要把换行处的空格 ...
随机推荐
- buf.readInt16BE()
buf.readInt16BE(offset[, noAssert]) buf.readInt16LE(offset[, noAssert]) offset {Number} 0 noAssert { ...
- 【Python实践-9】将字符串转化为浮点型
利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456. 思路:计算小数位数--->将字符串中的小数点去掉--->字符串转换为整数-- ...
- intel compiler的表现
好久没弄这个东西,今天突然想试下,代码没写完,以后补. #include <stdio.h> #include <stdlib.h> #include <time.h&g ...
- String类的转换功能
/* * String类的转换功能 * char[] toCharArray():把字符串转换为字符数组 * String toLowerCase():把字符串转换为小写字符串 * String to ...
- RequestMapping_Ant 路径
[使用@RequestMapping映射请求] [Ant风格资源地址支持3种匹配符] (1)? :匹配文件名中的一个字符. (2) * :匹配文件名中的任意字符. (3) ** :**匹配多层路径. ...
- H - Parity game 并查集
Now and then you play the following game with your friend. Your friend writes down a sequence consis ...
- Ubuntu18.04卸载lnmp
1.卸载 apache2 sudo apt-get --purge remove apache2* sudo apt-get autoremove apache2 (--purge 是完全删除并且不保 ...
- Redis: Useful commands
SELECT X - Select database (the X must be int) CONFIG GET databases - Get databases number INFO keys ...
- 【Python】Python 标准库 urllib2 的使用细节
转自:http://zhuoqiang.me/python-urllib2-usage.html http://www.cnblogs.com/txw1958/archive/2012/03/12/2 ...
- curl -O 下载文件
curl -O 下载文件 学习了:http://blog.csdn.net/wulong710/article/details/53127606 curl -O http://a.b.c/a.tar ...