一.我是在什么场景下会用到该Git操作 当某同事,将开发分支dev2合并到开发分支dev1时(两个不同的功能,不能合并),其他同事不知情的情况下,继续在dev1上开发并提交了代码. 后面发现了该合并,需要回退到合并前的状态,同时,合并后的提交也需要保留.那么就需要合并后面commit的内容到dev1分支 二.如何进行Git操作 使用如下命令就可以了 git cherry-pick commit_id *通过 git reflog可以查看历史提交的commit_id 比如:dev1&dev2是合并…
合并多次commit记录: good:https://blog.csdn.net/csdlwzy/article/details/83379546 使用 git log 命令查看提交历史: 想要合并前三个 commit ,使用下面的命令: git rebase -i HEAD~3 进入编辑界面,把要保留的 commit 使用pick,其他的使用squash命令,或者根据命令提示选择自己想用的命令. 保存退出(:wq,另外,进入编辑模式时按i键,突出编辑按esc),git自动进入另一个界面,此时就…
  原文:http://gitbook.liuhui998.com/4_2.html 一.基本 git rebase用于把一个分支的修改合并到当前分支. 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支. $ git checkout -b mywork origin 假设远程分支"origin"已经有了2个提交,如图 现在我们在这个分支做一些修改,然后生成两个提交(commit). $ vi file.txt $ git…
1,初始化仓库: git init --此命令会在当前目录下新建一个Git仓库.新建了一个 .git的隐藏目录,仓库的所有数据都放在这个目录里.目前还是空的. 2,跟踪,暂存文件: git add --执行git add 命令将源文件的修改加入git仓库的暂存区,待执行git commit时,正式将修改存入仓库.或新建一个文件后 git add 文件名  跟踪这个文件 3,提交: git commit --git commit 用于将暂存的修改提交入仓库 git commit -a git co…
  git rebase 使用总结: 使用git rebase 修改以前已经提交的内容 比如要修改之前的commit的 hashcode为:187f869c9d54c9297d6b0b1b4ff47d2ec781a55e 1,git rebase 187f869c9d54c9297d6b0b1b4ff47d2ec781a55e^ --interactive --退回到要修改的commit的前一个点上,执行后,git会调用默认的vi编辑器显示commit到最新commit的所有记录,把我们要修改的…
1 在当前分支,查看要合并的分支版本号 git log 需要合并的commit版本号 16b7df3aa1e64e00554a8a3c871e59db8cd87b16 2 切换到 指定分支 git checkout develop 3 执行合并指定commit版本到develop分支 get cherry-pick 16b7df3aa1e64e00554a8a3c871e59db8cd87b16…
1. 将指定的commit合并到当前分支 git cherry-pick  commit_id 2. 合并多个连续 commit 到指定分支 假设需要合并 devlop 上从 fb407a3f 到 92d2a449 的 commmit  合并到 master 分支 a. 基于 devlop 分支的 92d2a449  commit 创建一个新分支 git  checkout  -b  new_branch_name  92d2a449 b. 将指定 commit 之后的提交记录合并到指定分支(此…
场景:需要回退至红框中的那个版本,并且只添加“缓存逻辑优化,增加加载中的状态”这一次commit,其他的commit不添加. 步骤: 1) 切换到指定分支 dev git checkout dev 2) 回退至指定版本 git reset --hard 6fd1e9a70a70f381d060f83d4d4d5dc113ccae35 3) 创建新分支 test git branch test git checkout test 4) 添加 “缓存逻辑优化,增加加载中的状态” 这次commit g…
18:01 2015/11/18git两种合并方法 比较merge和rebase其实很简单,就是合并后每个commit提交的id记录的顺序而已注意:重要的是如果公司用了grrit,grrit不允许用merge,所以好像都是用rebase却别讲解,比如:在服务器上的develop分支有多人在开发,你们同时clone或pull下来最新代码,但是开发进度不一样,你在开发一个任务的时候其他人提交了编号为1,2的commit和push,你现在开发完了也要提交,你的提交编号是3,4(注意:编号不代表顺序现实…
创建与合并分支 在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分 支,即master分支.HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支. 一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点: 每次提交,master分支都会向前移动一步,这样,…
最近遇到一个问题,事情是这样子的,刚刚接到客户说他的项目有问题,于是就打开本地的源码查看经过排查确定了问题,于是就开始进行修正工作 将问题修复好准备提交到git的时候发现当前的分支是不对的,但问题是我已经在当前分支了作了大量修改,如果要切换分支则必须先要将修改过的文件先提交 那么现在问题来了:如何在不提交commit的情况下来切换分支呢? 最后通过查看Pro Git文档了解到Git中有一个stash功能可以实现 6.3 储藏(Stashing) 来源: <http://git.oschina.n…
https://blog.csdn.net/wwd0501/article/details/80676807 eclipse git 主干代码合并到分支: 1.项目切换至分支: 2.选中项目右键-->team-->merge-->orgin/master(Remote Tracking) 3.Merge options选择no commit,  比较一下后,如无冲突时, 提交到branch. Fast forward options选择默认的if a fast-forward,only…
git回滚到指定版本并推送到远程分支(撤销已提交的修改,并已push) git reset --hard <commit ID号> git push -f git回滚到上一个版本并推送到远程分支(撤销已提交的修改,并已push) git reset --hard HEAD~1 git push -f 恢复某个已修改的文件(撤销未提交的修改)$ git checkout file-name 撤销commit(还未push) git reset --soft commitId 还原已提交的修改(已…
一.自定义合并命令 将add commit push合并 git config --global alias.cmp '!f() { git add -A && git commit -m "日志" && git push; }; f' window下面就是在C:\Users\Administrator\.gitconfig文件中添加了上面的代码 然后执行命令 git cmp 二.配置相关 查看配置 git config --global --list…
快速重命名文件 $ git mv README.md readme.md 使用git mv命令后直接commit即可,不再需要进行add或rm操作 查看版本历史 所有的参数都可以进行组合使用的,比如我要看前两天简洁的信息,那么使用git log --oneline -n2就可以了,这里也只说 一些用的多的参数,具体的可以使用--help命令进行查看. 查看所有信息 $ git log 查看简洁信息 $ git log --oneline 查看前几条提交历史 $ git log -n2 查看所有分…
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支. 一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点: 每次提交,master分支都会向前移动一步,这样,随着你不断提交,m…
在push之前有时候会不放心是不是忘记加某些文件,或者是不是多删了个什么东西,这时候希望能够看看上次commit都做了些什么. 一开始想到的是用Git diff,但是git diff用于当前修改尚未commit的时候较为方便,一旦commit后,需要指定上次节点的名称(一个hash值),不方便.这种时候用git log更合适,因为commit的内容会以log来记录. 下面记录几个常用的情境以及对应的命令. 仅仅想看最近谁有提交,以及提交的描述 对应命令 git log 显示Sample comm…
一.为什么需要将一个 commit 复制到其他分支上去呢? 在我们的实际开发的过程中,我们的项目中会存在多个分支. 在某些情况下,可能需要将某一个分支上的 commit 复制到另一个分支上去.   二.具体操作流程 就像这张图所描述的这样,将 develop 分支中的 C~E 部分复制到 master 分支中去. 这时我们就可以用 git rebase 命令来实现了.   目前 master 分支上只有一个 commit. develop 分支上有四个 commit. 我们需要将最后三个 com…
在使用git进行版本管理时,往往会出现一些误操作,比如将一些不加上传的文件放到了暂存区,即上传到了上一次commit中 比如: commit c134ab90ca7c4daf8bfa22e3ad706150abbd9bbc Author: lin <@qq.com> Date: Mon Jan :: + 添加了不想放入暂存区的文件 Change-Id: I911c17175d0637de21824d34bc2b7bf8055e9d6c +++++++++++++++++++++++++++++…
本文转载自:https://www.36nu.com/post/275 git删除某次提交(某个commit)的方法 疯狂的兔子 发表于 4个月前 阅读 536 收藏 0 推荐 0 评论 0 推荐收藏 例如我的提交历史如下 commit 58211e7a5da5e74171e90d8b90b2f00881a48d3a Author: test <test@36nu.com> Date: Fri Sep 22 20:55:38 2017 +0800 add d.txt commit 0fb295…
git rebase解决合并冲突   记录合并冲突解决方法,使用的git rebase,感觉很好用 1.git rebase 文档 https://git-scm.com/docs/git-rebase 2.简易步骤 1)假如需要解决当前分支与dev分支的冲突使用 git rebase dev 若有冲突,会有相关位置指示,截图中没覆盖到...   1.png   2.png 2)查看代码,会发现冲突位置已经标明(灰色提示是vscode提供的)   3.png 3)解决冲突后,执行 git add…
查看提交历史 在提交了若干更新,又或者克隆了某个项目之后,如何查看提交历史 git log 官方栗子 运行下面的命令获取该项目: git clone https://github.com/scha 运行 git log 命令 可以获取到的信息 不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面 会列出每个提交的 SHA-1 校验和.作者的名字和电子邮件地址.提交时间以及提交说明 git log 常见命令行参数 -p.--patch:它会显示每次提交所…
当某个分支上的开发工作完成后需要将其合入主分支master 但是在提交合并前我们自己最好做一次衍合,目的是检测是否有冲突的风险,如果有应该在本分支先解决冲突然后在提交合并. 否则解决冲突的工作就全部转移到管理员身上了,如果有20个开发者那管理员都要累死了. 假设你当前在dev-xxx 分支 第一步 切换到master 分支 $ git checkout master 第二步 git pull 更新到最新版本 $ git pull origin 第三步 推衍 git rebase $ git re…
环境说明: 对于一个git项目而言,公司在gitlab上有对应的三个分支,以kazihuo项目为例说明,分别是development.master.testing,运维首先在gitlab上创建一个group,名为Kazihuo-repo:然后在此组中新建一个project,名为kazihuo,gitlab上此项目的地址为:git@git.wdjky.me:Kazihuo-repo/kazihuo.git: 开发人员对于此项目仅拥有development分支的权限,能够对development分支…
Git用Fast forward模式(快进模式),但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息. 下面我们实战一下--no-ff方式的git merge: $ git merge --no-ff -m "merge with no-ff" dev 可以看到,不使用Fast forward模式,merge后就像这样: 分支策略 在实际开发中,我们应该按照几个基…
转自:http://www.cnblogs.com/angeldevil/archive/2013/11/26/3238470.html 注:非常推荐的一篇关于git的博文 目录: 版本控制 一.原始版本控制 二.本地版本控制 三.集中版本控制 四.分布式版本控制 GIT 一.获得GIT仓库 二.GIT中版本的保存 三.GIT文件操作 四.提交与历史 五.GIT分支 六.标签-tag 七.Git配置 八.其他 REPO 版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改…
分支( branches ) 是指在开发主线中分离出来,做进一步开发而不影响到原来主线. Git 存储的不是一系列的更改集( changeset ),而是一系列快照.当你执行一次 commit 时, Git 存储一个 commit 对象,它包含一个指针指向你当前需要提交的内容的快照. Git 中的 master 分支的功能,和其他分支一样.master 在 git 项目中常见到,是因为 git init 命令运行时默认创建一个分支,并命名为 master. 创建一个新的分支,就是创建一个新的指针…
有两种方法获得一个 git 仓库:自行初始化,克隆别人已有的仓库 自行初始化 git init 克隆别人已有的库 git clone git@github.com:garrisonz/gitStudy.git 和其他版本管理系统不同, Git 的命令是 clone, 而不是 checkout.Git clone 除了拷贝最新版本的文件,还会拷贝服务器上存储的变更历史记录. 在仓库中记录变更历史 工作目录下的文件,可以分为两类:已被跟踪的 (tracked) .尚未被跟踪的 (untracked)…
昨天糗大了...进入新公司,公司服务器上有Online为线上版本,开发版本默认的为Master,本地clone的开发版为master,公司用的git 自动部署(puh后服务器自动更新了代码...这个有很多配置教程,这里就不赘述啦),本地开发分支master,一般流程是 合并到online分支后,把online push到远程分支....这个是流程OK不说了场景是这样的:本地master执行 checkout -b online后git push origin online  发现权限不够....…
基础操作 git配置 git config --global user.name "Your Name" git config --global user.email "email@example.com" 创建文件夹与进入 mkdir learngit cd learngit 设置当前位置为git仓库 git init 添加至仓库(又名版本库) git add readme.md git commit -m "wrote a readme file fo…