这是我们Git中的第三种后悔药。
1、 git commit --amend
命令说明
git commit --amend
命令:也叫追加提交,它可以在不增加一个新的 commit
的情况下,将新修改的代码追加到前一次的 commit
中。
使用此命令的好处是避免了许多无用的提交。
[En]
The advantage of using this command is to avoid many useless submissions.
说明:
- 如果自上次提交以来,你还未做任何修改(例如,在上次提交后马上执行了此命令),那么快照会保持不变(不产生新的
commit
),而修改的只是提交信息。 - 或者你提交后发现忘记了暂存某些需要的修改,可以将该文件添加到暂存区,然后在使用
git commit --amend
命令进行追加提交。
常用参数:
--no-edit
:使用选定的提交消息而无需启动编辑器。(追加提交,且不修改message
信息。)--reset-author
:加载提交用户的信息。
例如,您可以重新配置本地用户的信息,然后使用此参数重新加载新用户的信息并在追加提交中更新它。[En]
For example, you can reconfigure the local user’s information, and then use this parameter to reload the new user’s information and update it in the append submission.
--author=
:可修改Git 的author
和email
信息。
示例:git commit --amend --author='xxx <xxxx@xxx.xxx>' </xxxx@xxx.xxx>
2、使用场景
(1)场景一
场景描述:
开发代码已提交到本地版本库。提交后发现提交的代码有问题,或部分文件被遗漏。您希望实现以下目标:
[En]
The development code has been submitted to the local version library. After submission, it is found that there is a problem with the submitted code, or some files have been omitted. You want to achieve the following goals:
- 修改有问题的代码。
- 补足漏提交的文件。(一般是新增的文件没有
git add
) - 把以上两点相关的代码,和前一次提交的代码合并成一个提交。
- 给合并后的提交添加新的注释。
即:有时你提交过代码之后,发现一个地方改错了,你下次提交时不想保留上一次的记录,或者你上一次的 commit message
的描述有误,这时候你可以使用 git commit --amend
命令来解决。
解决步骤:
- 修改问题代码。
- 执行
git add .
命令,把漏提交的文件加入暂存区。 - 执行
git commit --amend -m "这里填写提交的注释"
命令进行提交。
示例:修改最新一次提交的message
有的时候,我们刚刚进行一次提交,突然发现该提交的描述( message
)不是很准确。所以需要对该提交的 message
进行修改(最近一次的 commit
)。
1)首先查看当前分支的历史提交情况。
# 1.查看版本库历史提交
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/amend_test (master)
$ git log --oneline
bd4fd48 (HEAD -> master) 第3次提交,新增内容:git commit --amend v3
8b3a071 第2次提交,新增内容:git commit --amend v2
d3e2d8c 第1次提交,新增readme.txt文件
# 2.查看可回退历史提交信息。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/amend_test (master)
$ git reflog
bd4fd48 (HEAD -> master) HEAD@{0}: commit: 第3次提交,新增内容:git commit --amend v3
8b3a071 HEAD@{1}: commit: 第2次提交,新增内容:git commit --amend v2
d3e2d8c HEAD@{2}: commit (initial): 第1次提交,新增readme.txt文件
2)修改最新一次历史提交记录。
最新的历史提交记录,即第三次提交。
[En]
The latest history submission record, that is, the third submission.
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/amend_test (master)
$ git commit --amend -m "我是第3次提交,重新修改的message"
[master 69a9841] 我是第3次提交,重新修改的message
Date: Tue Apr 20 17:41:44 2021 +0800
1 file changed, 1 insertion(+)
提示:如果此时有需要新增或改动的文件,可以先把文件添加都暂存区,然后随着
git commit --amend
命令,一起追加提交。
3)再次查看当前分支的历史提交情况。
# 1.查看版本库历史提交
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/amend_test (master)
$ git log --oneline
69a9841 (HEAD -> master) 我是第3次提交,重新修改的message
8b3a071 第2次提交,新增内容:git commit --amend v2
d3e2d8c 第1次提交,新增readme.txt文件
# 2.查看可回退历史提交信息。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/amend_test (master)
$ git reflog
69a9841 (HEAD -> master) HEAD@{0}: commit (amend): 我是第3次提交,重新修改的message
bd4fd48 HEAD@{1}: commit: 第3次提交,新增内容:git commit --amend v3
8b3a071 HEAD@{2}: commit: 第2次提交,新增内容:git commit --amend v2
d3e2d8c HEAD@{3}: commit (initial): 第1次提交,新增readme.txt文件
我们可以看到:
- 第三次提交的
massage
改变了。 - 看到第三次提交的
commit-id
由bd4fd48
变成了69a9841
- 我们可以看到使用
git commit --amend
命令,表面上没有生成新的提交,只是进行了内容的追加。但实际上通过git reflog
命令查看历史提交记录,我们还是看到了,其实是新生成了一个commit
。
说明:
- 关于
git commit --amend
命令原理,往下看。 - 关于如何修改更早提价的
message
,看后面的git rebase
文章。
(2)场景二
场景描述:
假设新接到需求,需要基于 master
分支拉取一个 feature
分支,且这个 feature
分支只有你自己使用(这一点极其重要),由于开发周期较长,你不想每一次提交都产生一个新的 commit
,而是想每一次 commit
都修改前一次提交(一直追加提交)。
这样做的好处是,等到你的 feature
分支提测时,就只有一个干净的 commit
,没有乱七八糟的提交历史,你只要把这一个 commit
合并到 master
里就好了 。
操作步骤:
在 feature
分支上:
- 第1次提交代码时,使用命令
git commit -a -m "第1次提交的注释"
进行提交。 - 第2次以及只后的提交,使用命令
git commit --amend -m "这里填写提交的注释"
进行提交。
这样整个分支可以只有一个commit
。
示例:
不推荐这样操作,多次提交可以使你选择撤销的余地比较多,简化提交次数是比较好的想法,但更推荐使用 git rebase
命令进行操作。
这里就不演示了。
3、 git commit --amend
命令原理
git commit --amend
这个命令给人的感觉,是用新提交的数据,追加到了前一个 commit
上。
其实 git commit --amend
命令底层原理如下:
前提:您先将丢失或修改的文档提交到临时存储区。
[En]
Premise: you submit the missing or modified documents to the temporary storage area first.
git reset --soft HEAD^
:回退一个版本,且工作区和暂存区中的内容不会退。git commit -c ORIG_HEAD
:提交操作。在根据此时的暂存区生成一个新的提交对象,代替原来提交的位置。
说明:
-C <commit></commit>
,全称--reuse-message=<commit></commit>
:获取现有的提交对象,并在创建提交时重用现有提交对象的日志消息和作者信息(包括时间戳)。
-c <commit></commit>
,全称--reedit-message=<commit></commit>
:与-C
类似,但是-c
会调用编辑器,以便用户可以进一步编辑提交消息。
看如下图示:
假设 master
分支上的提交历史如下图:

运行 git commit --amend
命令,过程如下:

参考:
- https://blog.csdn.net/zxr97570912/article/details/108085873
- https://www.cnblogs.com/chaoguo1234/p/5331586.html
Original: https://www.cnblogs.com/liuyuelinfighting/p/16798492.html
Author: 繁华似锦Fighting
Title: 『现学现忘』Git后悔药 — 34、git commit –amend 命令
相关阅读
Title: 用Python做一个超好玩的拼图游戏,0基础也能包你学会,附送超详细注释的源码~
导语

你所认为的 python……..
python & boring
枯燥、无趣



“安全”提示
走进 不一样的游戏世界
走进”python课堂”
让我们进入真正的编程世界,培养逻辑数理思维,学习掌握python特色,让你的学习过程不再枯燥、不再无趣~


下面跟着我的脚步一起来看看叭!!!
害,昨天看到一个Java版本的拼图小游戏上了推荐榜单哎!所以小编悄悄的走来了。
用Python做的拼图小游戏这也能上嘛?!
动漫人物个个生动,符合你口味。
对于动漫的人物你是否留意过?
来,跟随小编
用游戏的方式欣赏动漫人物的形象吧!
ps:小编用的是动漫卡通人物形象动物等等……大家可以自由选择滴!
(1)比如你对象做拼图:

(2)在比如你好奇心促使你想看缺不能看的:
啊这~其实一张恐怖片的图片,估计发出来会违规~
……………………………………………………分界线………………………………………………………………….
(3)再比如玛卡巴卡 做拼图:

咳咳咳………图片随缘大家随便找不管是什么 Python都能拼!!!
正文
(一)环境的安装:
Python版本:3.6.4
相关模块:
pygame模块;
以及一些Python自带的模块
(二)游戏简介:
这款拼图游戏分为几×几的模式,主要是分为33模式、44模式、5*5模式,对应的L简单难度、M中等难度、H最难!!照着原图能拼回来就是过关啦!!

(三)提前准备的张素材:








效果图:


附完整源代码:














好啦!本次文章就在这里啦!如文章有帮助到你,记得点赞,关注哦~
本期文章项目源码以及往期的案例资源需要的源码基地企鹅群见。
🎊🎊源码基地: 关注小编获取哦~💝记得三连吖

记得三连哦!爱你~
Original: https://blog.csdn.net/weixin_55822277/article/details/119806697
Author: 顾木子吖
Title: 用Python做一个超好玩的拼图游戏,0基础也能包你学会,附送超详细注释的源码~
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/363339/
转载文章受原作者版权保护。转载请注明原作者出处!