如何查看非快进 Git 更新的表示?

如何查看非快进 Git 更新的表示?

我正在尝试git push origin master并收到错误! [rejected] master -> master (non-fast-forward)。我明白错误的含义。(1)

但是,无论如何我都想决定是否要--force更新。为此,我需要查看并比较本地分支和目标远程分支的提交。我如何才能并排查看它们?我更喜欢使用 GUI 工具,例如gitg,但可读的命令行选项就足够了。


(1)这意味着我的本地分支不是目标远程分支的直接后代。这在以下位置有解释:

答案1

您可以使用以下工具来可视化和比较存储库:

git log——图表

您可以使用 git 命令行:

git log --graph --oneline --all --decorate

来自手册页:“在输出的左侧绘制基于文本的提交历史图形表示。这可能会导致在提交之间打印额外的行,以便正确绘制图形历史记录。”

查看提交历史记录作为示例(您必须向下滚动相当多)。

吉特克

您可以使用 gitk GUI:

git fetch origin # make sure you are up-to-date
gitk branchname origin/branchname # launch gitk

使用此命令,您可以看到本地和远程分支是如何分歧的。

其他工具

其他 GUI 工具可能具有类似的可视化选项。请参阅rob mayoff 对“Git push 不能快速合并是什么意思?”的回答请参阅您可能会看到的示例。

非快进

调查过程中提到了所有这些工具为什么 git pull 说是最新的,但 git push 拒绝非快进在 StackOverflow 上。答案包括如何在不强制的情况下解决非快进问题的技巧。(一个常见的原因是本地分支与远程分支同名 - 例如,同时命名本地和远程分支,origin/new-feature而不是仅将本地分支命名为new-feature。)

相关内容