-----------

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下的更多相关文章

  1. git下的团队合作模型及git基础知识汇集

    https://www.atlassian.com/git/tutorials/syncing/git-fetch Syncing svn使用单个中央库来作为开发者之间沟通的桥梁,而协同合作是通过在开 ...

  2. vs推送git失败,修改git下config的Log

    一开始写完程序套推送到Git中,然后就来了一下,下面的异常: 异常1 发布到远程存储库时遇到错误: Git failed with a fatal error. fatal: HttpRequestE ...

  3. Git下基本命令操作

    提前准备好一个文件夹,并且进入该文件夹. 1.clone Github 上的Repository,如: git clone git@github.com:Git账号用户名/项目名称.git 2.仓库初 ...

  4. Git下的.DS_Store文件

    .DS_Store 是什么 使用 Mac 的用户可能会注意到,系统经常会自动在每个目录生成一个隐藏的 .DS_Store 文件..DS_Store(英文全称 Desktop Services Stor ...

  5. 多人开发时Git下冲突的产生和解决

    冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动m ...

  6. Git 学习笔记--Git下的冲突解决

    冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动m ...

  7. php与Git下基于webhook的自动化部署

    前言 2018年第一篇文章,没啥技术含量,权当笔记 我们一般都会用git或者svn来管理我们的代码 每次代码更新后还要手动的去把服务器上的代码也更新一遍 项目小了还好 项目大了着实浪费时间 要是服务器 ...

  8. Git下的冲突解决【转】

    本文转载自:http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html 冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是m ...

  9. ubuntu git 下添加 ssh

    1 ssh-keygen 产生公钥和私钥  2 cat ~/.ssh/id_rsa.pub 复制出对应的公钥, 3 拷贝到git上的ssh-key里,注意拷贝时,换行处可能会引起错误,要把换行处的空格 ...

随机推荐

  1. Linux下常用的操作

    Linux下常用的操作 文件定位 locate filename 有些版本的linux会出现 -bash: locate: command not found错误,不要慌,安装一下mlocate包就好 ...

  2. Spring security 5 Authorize Configuration

    1. Spring Security 核心请求,认证配置类 WebSecurityConfigurerAdapter protected void configure(HttpSecurity htt ...

  3. maven profile多环境自动切换配置,配置分离,排除文件

    痛点: 在java开发的过程中,我们经常要面对各种各样的环境,比如开发环境,测试环境,正式环境,而这些环境对项目的需求也不相同. 在此之前,我们往往需要手动去修改相对应的配置文件然后打成war,才能部 ...

  4. Codeforces Round #244 (Div. 2)

    今天是水题集啊.... A. Police Recruits time limit per test 1 second memory limit per test 256 megabytes inpu ...

  5. node.js 发布订阅模式

    //导入内置模块 let EventEmitter = require('events'); let util=require('util'); //Man继承EventEmitter util.in ...

  6. something interesting when read docs

    When you kill a session with "ALTER SYSTEM KILL SESSION  '' ". If the session is performin ...

  7. ubuntu 必備

    1.切换到Ubuntu gnome 经典桌面注销unity桌面环境,然后选择登录环境为“经典桌面”即可进入.若是你喜欢Unity,可是你的显卡不给力3D不支持,怎么办呢?安装Unity-2D:sudo ...

  8. C++对象内存分布(3) - 菱形继承(virtual)

    1.前言 本篇文章的全部代码样例.假设是windows上编译执行.则使用的是visual studio 2013.假设是RHEL6.5平台(linux kernal: 2.6.32-431.el6.i ...

  9. Google2015校招在线測试题1----扫雷最少点击次数

    Problem Minesweeper is a computer game that became popular in the 1980s, and is still included in so ...

  10. xul 创建一个按钮

    MDN Mozilla 产品与私有技术 Mozilla 私有技术 XUL Toolbars 添加工具栏按钮 (定制工具栏) 添加工具栏按钮 (定制工具栏) 在本文章中 创建一个 overlay 在工具 ...