【转】git合并commit

有时commit太多,而且可能一个commit只是提交一个小bug,那么合并commit势在必行。
有两种方法:
一是在提交最后一个修改的commit使用参数,这时之前的一个commit将会合并到这个即将提交的commit中来:
git commit -a --amend -m "my message here"如果之前有一个提交,并且信息为:
git commit -a -m "my last commit message"

则这个commit message将不存在。但该commit的信息已经合并到"my message here"中了。

第二个是,如果你提交了最后的修改,这时可用:
$ git reset --soft HEAD^ #或HEAD^意为取消最后commit
$ git commit --amend

这将会把最后一个commit合并到前一个提交中去,例如(由上往下读):
git add b.text
git commit -a -m "my message here"
git add a.text
git commit -a -m "my last commit message"

那么最后存在的将是"my last commit message"。也可后退n个,合并到前面第n+1个commit中去:
$ git reset --soft HEAD~n #后退到第n,我也不清楚具体含义。
$ git commit --amend [-m "new message"]

我觉得最方面的是调用reflog查看操作历史,找到具体的commit id,然后直接git reset --hard [commit_id]就回到你要的版本!

时间: 2024-10-10 15:07:44

【转】git合并commit的相关文章

git合并远端分支到本地分支的两种方式

作者:zhanhailiang 日期:2014-11-21 在使用版本工具提交修改之前,都需要通过update先将本地代码更新到最新版本.SVN通过svn update就可以实现,那么git如何实现呢? 1. 首先通过从远程的origin的master主分支下载最新的版本到本地origin/master分支上,然后比较区别,最后合并到当前分支: [root@~/wade/nodejs/express-routing]# git fetch [email protected]:billfeller

git合并出现冲突

git合并出现冲突:Your local changes to the following files would be overwritten by merge:Please, commit your changes or stash them before you can merge.解决方案:git stash //使返回到自己上一个commit,先隐藏git pull origin master //拉取最新的代码git stash pop //回到自己修改的代码 原文地址:https:

git 合并master到本分支 合了一半发现有冲突,撤回合并

1.git 合并master到本分支发现有冲突,并且不想解决冲突,撤回合并 git reset --hard 2.已经合并到master的代码 git log  找到你的提交commit git reset --hard e377f60e28c8b84158  撤回到你找到的提交id 应用场景是,如果你的代码提交了,你要想回滚到上几个版本 3.git checkou 要回到提交的ID git checkout -b 新分支 git push --set-stream origin 新分支 原文地

git合并丢失代码问题分析与解决(错误操作导致)

问题描述 我们在主干dev和branch1分支上进行并行开发.当要把branch1功能的代码合并到dev上时,发现dev上开发的部分功能代码找不到了. 那么,是在branch1上,作了删除提交导致的吗?然而,查提交日志,并没有发现删代码的提交记录. 难道一个分支有一个功能,另一个分支没这个功能,git合并时就有可能把这块功能代码丢掉?跟功能添加时间顺序有关系? 为了解决这个问题和相关的疑问,我们需要先了解下git合并的过程. git-merge过程 稍微了解点git基础的应该都知道,合并是用的g

如何使用sourcetree 或 IDEA 自带的git合并代码?

如何将本地的wyy分支合并并推送到远端的 develop分支? 规则:最好是本地的分支wyy推送到对应的远端origin/wyy ,不建议直接推送到远端不同的分支!!所以 基本思路如下: 1.本地的wyy分支推送到对应的远端origin/wyy, 2.本地的wyy合并到本地的develop分支, 3.本地的develop分支推送到对应的远端origin/develop 最终保持wyy,origin/wyy,develop,origin/develop都处于同一个版本即可. 先说一个小插曲: 为什

git合并冲突操作

最近的项目中要用到git版本管理,Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 我这里是在IntelliJ IDEA 14.0.2这个软件上面使用git提交代码.我这里就不介绍git的各个命令了,因为网上很多,我这里只是演示 在分支上提交代码到主干的步骤 下面是git合并分支的步骤: 1. 新建一个分支(例如新分支feizhi) 2.在分支feizhi上修改某个文件,比如一下在SaibongRusult.java上增加一段注释add by feizhi

“Will not add file alias 'samefile' ('SameFile' already exists in index)” when `git add/commit` operation

从远程仓库pull下来的代码有两个类类名首字母小写出现如下情况 然后我想删了重新写一下(就是把这个类删了,代码复制到名字正确的类里面),然后commit的时候出现这个错误,后来删一个commit一下,就可以commit,暂时估计是删了之后commit把原先index里面的清空了 "Will not add file alias 'samefile' ('SameFile' already exists in index)" when `git add/commit` operation

Git 撤销commit的注意事项

Git撤销commit的操作命令  git reset --hard HEAD^ 一.新建三个文件,demo1,demo2,demo3 二.git add 命令提交到暂存区,git reset HEAD demo1就是把提交到暂存区里的文件撤销. 上图中,执行git reset HEAD demo1就会把demo1从暂存区中撤销,现在是untracked. 三.git commit 提交本地仓库 上图中显示,git commit把demo2,demo3提交到本地仓库中. 四.现在想撤销之前的co

Git管理修正(取消跟踪、合并commit)

本文总结了最近使用Git时候遇到的两个问题: 1. 当将不必要跟踪的文件加入到仓库后如何处理? 2. 提交了多个功能相同的commit后如何处理? 总结经验 在创建仓库的一开始,就要设置号.gitignore文件,用于过滤掉不需要跟踪的文件和文件夹 谨慎提交commit,确保每个commit中所有的改动都是跟同一个任务相关的. 我是怎么解决上述两个问题的 1. 移除对文件/文件夹的跟踪,但不删除 使用命令git rm --cached ignore_target_file 删除对某个文件的跟踪