无痕修复:优雅修改本地及远程Commit信息,保持项目历史整洁,一份非常适合收藏的大数据开发进阶面试题

35 阅读5分钟

img img img

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

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

需要这份系统化资料的朋友,可以戳这里获取

查看本地分支状态

$ 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 e.coding.net/love2157dre… ......


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 e.coding.net/love2157dre… ......


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 e.coding.net/love2157dre… ......




> 

> 注意:在本地分支上修改最近一次的提交信息,命令行中有无 `-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 e.coding.net/love2157dre… ......


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 e.coding.net/love2157dre…

  • 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 e.coding.net/love2157dre… ......


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 e.coding.net/love2157dre…

  • 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 e.coding.net/love2157dre… ......


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


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



$ git log --oneline f67f077 (HEAD -> master, origin/master, origin/HEAD) add: user2新增了参与贡献区域的内容 d63ca18 fix: user2看来是真的还原了特技区域的第六项内容 18e8c42 fix:特技区域的第六项内容真的是user2操作的吗


2. 修改最近一条提交信息,此时的记录hash值是 `a9396fe`

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


3.查看此时的分支状态,提示本地分支和远程分支存在一次不同的提交记录,可以使用 `git pull` 进行更新:



$ git status On branch master Your branch and 'origin/master' have diverged, and have 1 and 1 different commits each, respectively. (use "git pull" if you want to integrate the remote branch with yours)

nothing to commit, working tree clean


4. 使用 `git pull` 把远程分支和当前分支进行集成, 然后使用 `git push` 提交到远程分支



$ git pull origin master From e.coding.net/love2157dre…

  • branch master -> FETCH_HEAD Merge made by the 'ort' strategy.

$ git push origin master Enumerating objects: 2, done. Counting objects: 100% (2/2), done. Delta compression using up to 8 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 477 bytes | 477.00 KiB/s, done. Total 2 (delta 0), reused 0 (delta 0), pack-reused 0 To e.coding.net/love2157dre… f67f077..ddb8221 master -> master


5.查看提交记录的日志信息:



$ git log --oneline ddb8221 (HEAD -> master, origin/master, origin/HEAD) Merge branch 'master' of e.coding.net/love2157dre… a9396fe add: user2在参与贡献区域新增了第九项内容 f67f077 add: user2新增了参与贡献区域的内容 d63ca18 fix: user2看来是真的还原了特技区域的第六项内容 18e8c42 fix:特技区域的第六项内容真的是user2操作的吗 ......



> 
> **总结:** 从提交记录信息上看,修改远程分支上最近一次提交信息的内容,直接使用 `git push` 提交远程分支时,会新增两条分支的记录,一条是修改后提交记录`a9396fe`, 一条是合并分支的记录`ddb8221`,这样会让提交记录变得冗余,因此推荐使用 `--force-with-lease` 提交远程记录。
> 
> 
> 


### 写在最后


![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/ec87dd9d21094d34895464173a25c8fd~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1771935826&x-signature=4mJbqFC6mT%2BDHE4Z8pSemI6uqRQ%3D)
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/67aba878f73e4d8ea408299e301f4ead~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1771935826&x-signature=W370xfkGTp7AgBn5lXeQf6jbIo4%3D)

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

**[需要这份系统化资料的朋友,可以戳这里获取](https://gitee.com/vip204888)**


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