git入门(4.提交与历史)

四、提交与历史

  了解了文件的状态,我们对文件进行了必要的修改后,就要把我们所做的修改放入版本库了,这样以后我们就可以在需要的时候恢复到现在的版本,而要恢复到某一版,一般需要查看版本的历史。

提交

  提交很简单,直接执行"git commit"。执行git commit后会调用默认的或我们设置的编译器要我们填写提示说明,但是提交说明最好按GIT要求填写:第一行填简单说明,隔一行填写详细说明。因为第一行在一些情况下会被提取使用,比如查看简短提交历史或向别人提交补丁,所以字符数不应太多,40为好。下面看一下查看提交历史。

查看提交历史

  查看提交历史使用如下图的命令

   

  如图所示,显示了作者,作者邮箱,提交说明与提交时间,"git log"可以使用放多参数,比如:

   

  仅显示最新的1个log,用"-n"表示。

   

  显示简单的SHA-1值与简单提交说明,oneline仅显示提交说明的第一行,所以第一行说明最好简单点方便在一行显示。

  "git log --graph"以图形化的方式显示提交历史的关系,这就可以方便地查看提交历史的分支信息,当然是控制台用字符画出来的图形。

  "git log"的更多参数可以查看命令帮助。

不经过暂存的提交

 如果我们想跳过暂存区直接提交修改的文件,可以使用"-a"参数,但要慎重,别一不小心提交了不想提交的文件

git commit -a

  如果需要快捷地填写提交说明可使用"-m"参数

git commit -m ‘commit message‘

修订提交

  如果我们提交过后发现有个文件改错了,或者只是想修改提交说明,这时可以对相应文件做出修改,将修改过的文件通过"git add"添加到暂存区,然后执行以下命令:

git commit --amend

  然后修改提交说明覆盖上次提交,但只能重写最后一次提交。

重排提交

  通过衍合(rebase)可以修改多个提交的说明,并可以重排提交历史,拆分、合并提交,关于rebase在讲到分支时再说,这里先看一下重排提交。

  假设我们的提交历史是这样的:

   

  如果我们想重排最后两个提交的提交历史,可以借助交互式rebase命令:

git rebase -i HEAD~2 或 git rebase -i 3366e1123010e7d67620ff86040a061ae76de0c8

  HEAD~2表示倒数第三个提交,这条命令要指定要重排的最旧的提交的父提交,此处要重排Second commit与Third commit,所以要指定Initial commit的Commit ID。如图所示:

   

  注释部分详细说明了每个选项的作用,如果我们想交互这两个提交,只需把开头的这两行交换下位置就OK了,交换位置后保存,然后看下提交历史:

   

  可以看到提交历史已经变了,而且最新的两个提交的Commit ID变了,如果这些提交已经push到了远程服务器,就不要用这个命令了。

删除提交与修改提交说明

  如果要删除某个提交,只需要删除相应的行就可以了,而要修改某个提交的提交说明的话,只需要把相应行的pick改为reward。

合并提交-squashing

  合并提交也很简单,从注释中的说明看,只需要把相应的行的pick改为squash就可以把这个提交全并到它上一行的提交中。

拆分提交

  至于拆分提交,由于Git不可能知道你要做哪里把某一提交拆分开,把以我们就需要让Git在需要拆分的提交处停下来,由我们手动修改提交,这时要把pick改为edit,这样Git在处理到这个提交时会停下来,此时我们就可以进行相应的修改并多次提交来拆分提交。

撤销提交

  前面说了删除提交的方法,但是如果是多人合作的话,如果某个提交已经Push到远程仓库,是不可以用那种方法删除提交的,这时就要撤销提交

git revert <commit-id>

  这条命令会把指定的提交的所有修改回滚,并同时生成一个新的提交。

Reset

  git reset会修改HEAD到指定的状态,用法为

git reset [options] <commit>

  这条命令会使HEAD提向指定的Commit,一般会用到3个参数,这3个参数会影响到工作区与暂存区中的修改:

--soft: 只改变HEAD的State,不更改工作区与暂存区的内容

--mixed(默认): 撤销暂存区的修改,暂存区的修改会转移到工作区

--hard: 撤销工作区与暂存区的修改

cherry-pick

  当与别人和作开发时,会向别人贡献代码或者接收别人贡献的代码,有时候可能不想完全Merge别人贡献的代码,只想要其中的某一个提交,这时就可以使用cherry-pick了。就一个命令

git cherry-pick <commit-id>

filter-branch

  这条命令可以修改整个历史,如从所有历史中删除某个文件相关的信息,全局性地更换电子邮件地址。

时间: 2024-11-03 03:33:19

git入门(4.提交与历史)的相关文章

git入门(1.历史)

git入门(1.历史) git入门(2.基础) git入门(3.文件操作) git入门(4.提交与历史) git入门(5.分支) git入门(6.repo) 版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本.有时候偷懒省事,保存副本时命名比较随意,时间长了就不知道哪个是新的,哪个是老的了,即使知道新旧,可能也不知道每个版本是什么内

git log 查看提交历史

文章出处http://blog.csdn.net/wh_19910525/article/details/7468549  git log  查看 提交历史 在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看. 接下来的例子会用我专门用于演示的 simplegit 项目,运行下面的命令获取该项目源代码: git clone git://github.com/schacon/simplegit-progit.git 然后在此项目中运行 git log,

【Git入门之十四】Git GUI

[Git入门之十四]Git GUI - JackyStudio - 博客频道 - CSDN.NET 文章都快写完了,Git GUI才浮出水面,很多人要骂我,这么方便的东西怎么不早拿出来. 当然命令行和图形界面各有千秋,个人觉得命令行更能让人清楚的掌握整个项目的代码线.当然萝卜青菜各有所爱,Windows,Linux也是一样.喜欢什么客官您挑.本文只做简单介绍. 1.Git GUI有什么? 霸气测漏的右键菜单和可视化管理界面. 2.初始化仓库 新建一个文件夹叫JackyGUI,右键点击Git In

GIt入门

1.下载与安装 下载地址:http://code.google.com/p/msysgit/,该地址没有被墙,git官方网站http://git-scm.com/已经被墙,无法访问下载. 选择下载Git-1.7.11-preview20120710.exe,这是笔者写这篇文章时的最新版本.下载完成,点击exe一路安装即可. 2.配置 (1)每一次提交都需要包含你的名字和你的Email地址,因此需要配置一下这两个参数,使用以下命令: Shell代码   git config --global us

Git入门(三)——没有版本控制意识的程序员不是一个好的程序员

之前所讲的都是"自娱自乐",自己管理自己的项目.本篇主要是Git入门的尾声,也是最为精华的一部分,即利用Git进行版本控制,进行"团队协作开发",也会介绍分支合并以及合并冲突时常见的处理方法. 五.团队协作流程 1. 基本流程 (1) 创建一个分支 当你在开发一个项目的时候,一般在同一时刻你会同时展开多个想法,其中一些比较成熟了,另一些还是很初级的.有了分支就可以很好地来进行管理了.当你在项目中创建一个分支的时候,你可能就是正在搭建一个可以尝试新想法的环境.你在新分

git入门-分支

原地址:http://codingnow.cn/git/228.html1. git分支简介 使用分支可以让你从开发主线上分离开来,然后在新的分支上解决特定问题,同时不会影响主线.像其它的一些版本控制系统,创建分支需要创建整个源代码目录的副本.而Git 的分支是很轻量级的,因为Git保存的不是文件差异,而是一系列文件快照.在Git提交时,会保存一个commit对象,该对象包含一个指向暂存内容快照的指针,Git 会先计算每一个子目录的校验和( SHA-1 哈希字串),然后在 Git 仓库中将这些目

Git 入门 ---- Git 常用命令

本文作为  Git 入门 ---- Git 与 SVN 区别 的续篇,继续介绍 Git 的入门知识 四. Git 安装 OS X 版本: Mac 一般自带不需要安装 Windos 版本: https://git-for-windows.github.io/ Linux 版本: Linux 一般也是自带无需安装 五. 创建新仓库 创建新文件夹,cd 到文件夹,执行命令: git init  用来创建新 git 仓库 六. 提交文件进仓库 在新建好 git 仓库的文件夹里加入 readme.txt

Git入门用法简介

一.           git和svn的主要区别 git是一个分布式的版本控制工具,而svn是一个集中式版本控制工具. 二.           git工具安装 首先下载git:https://git-scm.com/download/ 安装完成后,右键菜单和开始菜单中会出现git相关选项. 三.           git使用 1. 进入git命令行 进入待创建版本库的目录后,在右键菜单中选择“Git Bash”,弹出Git命令窗口(也可以在任意路径打开git命令窗口,使用cd命令进入版本库

git 入门操作

从已有的GIT仓库获取最新代码 git clone url 建立本地仓库,并提交至git-hub 生成ssh的公钥私钥对:ssh-keygen 从pc端打开生成的公钥,id_rsa.pub,复制并黏贴至git-hub的ssh-keys cd至程序文件夹,输入 git init 然后输入git add .(.代表所有文件也可以输入具体的单个文件名) 然后输入git commit -m “任意注释” 创建一个remote git remote add origin url(ssh.https.sub