> 技术文档 > 【Git】【commit】查看未推送的提交&查看指定commit的修改内容&合并不连续的commit_git如何查看commit未push的记录

【Git】【commit】查看未推送的提交&查看指定commit的修改内容&合并不连续的commit_git如何查看commit未push的记录


文章目录

  • 1. 查看未推送的提交
    • 方法一 :git status
    • 方法二:git log
    • 方法三:git cherry
    • 方法四:git rev-list
  • 2. 查看指定commit的修改
    • 方法一:git show
    • 方法二:git log
    • 方法三:git diff
  • 3. 合并不连续的提交
    • step1 : 启动交互式变基
    • step2 : 调整提交顺序
    • step3 : 合并提交
    • step4 : 解决冲突并提交
    • 示例
  • 4. 编辑已提交的commit提示信息

1. 查看未推送的提交

方法一 :git status

若回显内容如下,则表示本地有未推送的提交:1 commit表示没有推送的提交数量

Your branch is ahead of \'origin/main\' by 1 commit. (use \"git push\" to publish your local commits)

方法二:git log

查看本地是否有未推送的提交:

git log origin/main..HEAD# origin/main为远程分支名称

若回显内容为空,则表示本地所有的提交均已推送;若回显有内容,则为未推送的提交

方法三:git cherry

如下命令可列出未推送的提交:

git cherry -v origin/main# -v : 显示提交的详细信息

回显结果中的提交即为未推送的提交

方法四:git rev-list

git rev-list可以统计为推送的提交数量:

git rev-list --count origin/main..HEAD

回显的数字即表示未推送的提交数量。

2. 查看指定commit的修改

方法一:git show

显示指定commit的日期、作者、提交信息以及文件更改的差异:

git show <commitid># 选项git show --stat <commitid> : 仅显示修改的文件和行数统计git show <commitid>:<path-to-file> : 查看特定文件的变更

方法二:git log

在提交历史中显示该commit的详细信息以及差异:

git log -p -1 <commitid>-p : patch,表示显示差异-1 : 表示仅显示一个提交

方法三:git diff

比较当前commit与其父commit的差异:

git diff <commitid>^ <commitid>

3. 合并不连续的提交

可以使用交互式变基调整提交顺序并合并:

step1 : 启动交互式变基

git rebase -i HEAD~N # N要足够大,能包含目标提交git rebase -i <commitid>^ # 或者指定更早的提交点

step2 : 调整提交顺序

编辑器中显示的提交内容假设如下:

pick a1b2c3d Commit 1pick e4f5g6h Commit 2pick i7j8k9l Commit 3

将要合并的提交移动到相邻位置:

pick a1b2c3d Commit 1pick i7j8k9l Commit 3 # 移动pick e4f5g6h Commit 2 

step3 : 合并提交

将排在第二位的提交的命令从pick改为squash(保留提交信息)或fixup(丢弃提交信息)

pick a1b2c3d Commit 1squash i7j8k9l Commit 3 # 合并到前一个提交pick e4f5g6h Commit 2

step4 : 解决冲突并提交

保存并退出编辑器,git启动合并,若此时出现冲突则解决冲突后执行:

git add .git rebase --continue

最后,如果使用squash则编辑最终的提交信息。

示例

# 假设要合并 a12345(新)和 b12345(旧)git rebase -i a12345^ # 从目标提交之前开始# 在编辑器中将 b12345 移动到 a12345 的下一行并改为squash# 解决冲突

4. 编辑已提交的commit提示信息

场景一:修改最近一次的提交

git commit --amend

执行后会自动打开编辑器,修改提交信息后保存并退出,之后强制推送到远程仓库(如果已经推送过),可执行如下命令:

git push --force-with-lease--force-with-lease : 在强制覆盖远程分支前进行安全检查,避免意外覆盖他人的提交

场景二:修改历史提交

# 查看提交记录,确定要修改的提交位置git log --oneline# 启动交互式变基,修改前N个提交git rebase -i HEAD~3# 在变基编辑器中执行:1. 找到目标提交行,将行首的pick改为reword(或者r)2. 保存退出后,git会逐个打开待修改的提交信息编辑器,修改对应提交信息并保存3. 完成变基后强制推送 git push --force-with-lease

崇文门中文网