无痕修复:优雅修改本地及远程Commit信息,保持项目历史整洁

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文


**推荐理由:** `--force-with-lease` 提供了一种更安全的强制推送方式。它会在推送前检查远程分支的状态是否与你预期的一致。如果远程分支在你上次拉取后有其他人的新提交,推送会失败,从而避免意外覆盖他人的工作。在多人协作的环境中,`--force-with-lease` 是一个更好的选择。


#### 操作步骤总结


修改最近一次Git提交信息并推送到远程仓库的流程如下:


1. 修改提交消息:`git commit --amend` 或 `git commit --amend -m "New commit message"`
2. 强制推送更改到远程:`git push --force-with-lease origin <your_branch_name>`


请确保在执行强制推送操作前,与你的团队成员沟通,告知他们你将修改最近的提交,以避免产生不必要的冲突或丢失他人的工作。在多人协作的项目中,修改已公开的历史提交通常应尽量避免,除非确实必要且团队成员达成共识。


### 应用实践及注意事项


##### 场景一:修改本地分支最近一次提交信息,切记此时没有提交到远程分支。


1.查看下本地分支的日志信息:



$ git log --oneline
d63ca18 (HEAD -> master, origin/master, origin/HEAD) fix: user2看来是真的还原了特技区域的第六项内容
18e8c42 fix:特技区域的第六项内容真的是user2操作的吗
c635285 Merge branch ‘master’ of https://e.coding.net/love2157dream/gittest/git-test-demo
eee0505 fix: user2还原了特技区域的第六项内容


2.修改文件,然后往本地分支提交信息:



查看本地分支状态

$ git status
On branch master
Your branch is up to date with ‘origin/master’.

Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git restore …” to discard changes in working directory)
modified: README.md

no changes added to commit (use “git add” and/or “git commit -a”)

添加文件到暂存区

$ git add .

提交信息

$ git commit -m “add: user2修改文件”
[master 4b4f48b] add: user2修改文件
1 file changed, 2 insertions(+)


3.查看刚刚提交到本地分支的日志信息,发现hash简短值是`4b4f48b`:



4b4f48b (HEAD -> master) add: user2修改文件
d63ca18 (origin/master, origin/HEAD) fix: user2看来是真的还原了特技区域的第六项内容
18e8c42 fix:特技区域的第六项内容真的是user2操作的吗
c635285 Merge branch ‘master’ of https://e.coding.net/love2157dream/gittest/git-test-demo


4.第一次修改刚刚提交的信息,使用 `--amend`,不加 `-m` 参数,此时会打开编辑器,来修改提交信息内容:



$ git commit --amend
[master 665763e] add: user2增加了参与贡献区域的内容
Date: Tue Apr 2 10:47:10 2024 +0800
1 file changed, 2 insertions(+)


5.查看第一次修改的提交信息后的日志信息,发现`没有新增一条提交信息,而是修改了hash值`:



$ git log --oneline
665763e (HEAD -> master) add: user2增加了参与贡献区域的内容
d63ca18 (origin/master, origin/HEAD) fix: user2看来是真的还原了特技区域的第六项内容
18e8c42 fix:特技区域的第六项内容真的是user2操作的吗
c635285 Merge branch ‘master’ of https://e.coding.net/love2157dream/gittest/git-test-demo


6.第二次修改提交信息,带上`-m`参数,此时不会打开编辑器,输入提交信息,而是直接在参数后跟上提交信息:



$ git commit --amend -m “add: user2增加了参与贡献区域的第九项内容”
[master 0c8dc7d] add: user2增加了参与贡献区域的第九项内容
Date: Tue Apr 2 10:47:10 2024 +0800
1 file changed, 2 insertions(+)


7.查看第二次修改的提交信息后的日志信息,发现`没有新增一条提交信息,而是修改了hash值`,



$ git log --oneline
0c8dc7d (HEAD -> master) add: user2增加了参与贡献区域的第九项内容
d63ca18 (origin/master, origin/HEAD) fix: user2看来是真的还原了特技区域的第六项内容
18e8c42 fix:特技区域的第六项内容真的是user2操作的吗
c635285 Merge branch ‘master’ of https://e.coding.net/love2157dream/gittest/git-test-demo



> 
> 注意:在本地分支上修改最近一次的提交信息,命令行中有无 `-m` 参数,提交的记录信息都不会新增多条记录。
> 
> 
> 


##### 场景二:修改远程分支上的最近一次提交信息



> 
> 提交到远程时使用参数 `--force-with-lease` (推荐) 或者 使用 `--force` (慎用),不会导致新增记录,会覆盖最近一条的记录。
> 
> 
> 


1. 查看下提交记录日志信息,此时最近一次记录hash值是 `0c8dc7d`:



$ git log --oneline
0c8dc7d (HEAD -> master) add: user2增加了参与贡献区域的第九项内容
d63ca18 (origin/master, origin/HEAD) fix: user2看来是真的还原了特技区域的第六项内容
18e8c42 fix:特技区域的第六项内容真的是user2操作的吗
c635285 Merge branch ‘master’ of https://e.coding.net/love2157dream/gittest/git-test-demo


2.第一次使用不带 `-m` 参数修改记录,此时记录hash值是 `97d50ca`:



$ git commit --amend
[master 97d50ca] add: 参与贡献区域的第九项内容的内容是用户user1增加的
Date: Tue Apr 2 10:47:10 2024 +0800
1 file changed, 2 insertions(+)


3.使用 `--force-with-lease` 提交记录信息到远程分支上:



$ git push --force-with-lease origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 395 bytes | 131.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
To https://e.coding.net/love2157dream/gittest/git-test-demo.git

  • 0c8dc7d…97d50ca master -> master (forced update)

4.查看提交信息,没有新增记录信息,只是 `修改了hash值和提交信息内容`:



97d50ca (HEAD -> master, origin/master, origin/HEAD) add: 参与贡献区域的第九项内容的内容是用户user1增加的
d63ca18 fix: user2看来是真的还原了特技区域的第六项内容
18e8c42 fix:特技区域的第六项内容真的是user2操作的吗
c635285 Merge branch ‘master’ of https://e.coding.net/love2157dream/gittest/git-test-demo


5.第二次使用带 `-m` 参数修改记录,此时记录hash值是 `f67f077`:



$ git commit --amend -m “add: user2新增了参与贡献区域的内容”
[master f67f077] add: user2新增了参与贡献区域的内容
Date: Tue Apr 2 10:47:10 2024 +0800
1 file changed, 2 insertions(+)


6.同样是使用 `--force-with-lease` 提交记录信息到远程分支上:



$ git push --force-with-lease origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 372 bytes | 372.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
To https://e.coding.net/love2157dream/gittest/git-test-demo.git

  • 97d50ca…f67f077 master -> master (forced update)

7.查看提交信息,没有新增记录信息,只是 `修改了hash值和提交信息内容`:



$ git log --oneline
f67f077 (HEAD -> master, origin/master, origin/HEAD) add: user2新增了参与贡献区域的内容
d63ca18 fix: user2看来是真的还原了特技区域的第六项内容
18e8c42 fix:特技区域的第六项内容真的是user2操作的吗
c635285 Merge branch ‘master’ of https://e.coding.net/love2157dream/gittest/git-test-demo


##### 场景三:修改远程分支上的最近一次提交信息,直接使用 git push 提交


1.查看最近的提交记录日志信息,此时最近一条记录hash值是 `f67f077`:


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)**
![img](https://img-blog.csdnimg.cn/img_convert/ff841e3abfa5dbef5a7cbdf82987ee32.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

录hash值是 `f67f077`:


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)**
[外链图片转存中...(img-h3acNKMy-1713196101359)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值