文章目录
  1. 1. 保持Git提交原子性的基本操作
    1. 1.1. 用工作区改动的一部分产生提交
    2. 1.2. 对当前提交进行拆分
    3. 1.3. 修改当前提交
    4. 1.4. 交换多个提交的先后顺序
    5. 1.5. 修改非当前提交
  2. 2. Commit操作的后悔药
    1. 2.1. 尚未add 时撤销修改
    2. 2.2. add后尚未 commit 时撤销
    3. 2.3. commit 后尚未push 时回退版本
  3. 3. 参考链接

Git 是我们日常开发中常用的代码版本管理工具, 在日常的开发中我们习惯了先Add,再commit然后再push到远程仓库的操作。
其实这些操作也是最基础的操作,下文会根据日常开发中的常见场景介绍Git的其他操作。

保持Git提交原子性的基本操作

用工作区改动的一部分产生提交

command line:

git add -p <file-name>

进入git add patch 模式之后,命令行会将文件中处于woring directory的修改拆分成多个逻辑代码块,
然后命令行会依次询问这些代码块是否要将这些改变加入到暂存区(staging area), 这里只需选择 y or n即可,当然也可以通过 s 指令把代码块进一步拆分。
添加完成后,可以通过 git diff –cached 命令查看确定添加到暂存区代码。

对当前提交进行拆分

command line:
git branch temp
git reset HEAD^
git add -p <file-name>

修改当前提交

command line:

  • 修改 Commit Message

    git commit --amend

  • 修改文件内容

    git addgit rm
    git commit --amend

交换多个提交的先后顺序

前提: commit在本地还没有push到remote upstream

command line:
git branch temp
git rebase -i origin/master 然后在交互命令选择 pick 命令(用法: pick hash-value)交换两个提交,

修改非当前提交

command line:
git branch temp
git rebase -i origin/master 然后在交互命令选择 edit 命令(用法: edit hash-value), 然后通过git addgit rm 命令对需要修改的文件进行操作,之后运行git commit --amend 进行提交
git rebase --continue 完成 git rebase -i命令的后续操作。

Commit操作的后悔药

尚未add 时撤销修改

git checkout -- file_name

add后尚未 commit 时撤销

git rm --cached

commit 后尚未push 时回退版本

git reset --hard HEAD^

参考链接

图解Git

文章目录
  1. 1. 保持Git提交原子性的基本操作
    1. 1.1. 用工作区改动的一部分产生提交
    2. 1.2. 对当前提交进行拆分
    3. 1.3. 修改当前提交
    4. 1.4. 交换多个提交的先后顺序
    5. 1.5. 修改非当前提交
  2. 2. Commit操作的后悔药
    1. 2.1. 尚未add 时撤销修改
    2. 2.2. add后尚未 commit 时撤销
    3. 2.3. commit 后尚未push 时回退版本
  3. 3. 参考链接