显示提交之间的差异
我在 Ubuntu 10.04 (Lucid Lynx) 上使用 Git。
我已经向我的主人做出了一些承诺。
但是,我想了解这些提交之间的差异。它们都在我的主分支上。
例如:
commit dj374
made changes
commit y4746
made changes
commit k73ud
made changes
我想得到k73ud和dj374之间的区别。但是,当我执行以下操作时,我看不到我在 k73ud
中所做的更改。
git diff k73ud..dj374 > master.patch
I am using Git on Ubuntu 10.04 (Lucid Lynx).
I have made some commits to my master.
However, I want to get the difference between these commits. All of them are on my master branch.
For example:
commit dj374
made changes
commit y4746
made changes
commit k73ud
made changes
I want to get the difference between k73ud and dj374. However, when I did the following I couldn't see the changes I made in k73ud
.
git diff k73ud..dj374 > master.patch
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
尝试
确保在结果差异中包含
k73ud
的所有更改。git diff
比较两个端点 (而不是提交范围)。由于 OP 希望看到
k73ud
引入的更改,因此他们需要区分 第一个父提交 <代码>k73ud:k73ud^
(或k73ud^1< /code> 或
k73ud~
)。
这样,
diff
结果将包含自k73ud
父级以来的更改(意味着包括k73ud
本身的更改),而不是自k73ud
以来引入的更改(直至dj374
)。您也可以尝试:
和(1 个空格,而不是更多):
如果您只需要获取文件名(例如手动复制修补程序):
并且您可以将更改应用于另一个分支:
Try
to make sure to include all changes of
k73ud
in the resulting diff.git diff
compares two endpoints (instead of a commit range).Since the OP wants to see the changes introduced by
k73ud
, they need to differentiate between the first parent commit ofk73ud
:k73ud^
(ork73ud^1
ork73ud~
).That way, the
diff
results will include changes sincek73ud
parent (meaning including changes fromk73ud
itself), instead of changes introduced sincek73ud
(up todj374
).Also you can try:
and (1 space, not more):
And if you need to get only files names (e.g. to copy hotfix them manually):
And you can get changes applied to another branch:
要查看以下之间的区别:
您的工作副本和暂存区域:
暂存区域和最新提交:
您的工作副本和提交 4ac0a6733:
提交 4ac0a6733 和最新提交:
提交 4ac0a6733 和提交 826793951
有关更多说明,请参阅 官方文档。
To see the difference between:
Your working copy and staging area:
Staging area and the latest commit:
Your working copy and commit 4ac0a6733:
Commit 4ac0a6733 and the latest commit:
Commit 4ac0a6733 and commit 826793951
For more explanation see the official documentation.
如果您想查看每次提交引入的更改,请尝试“git log -p”
If you want to see the changes introduced with each commit, try "git log -p"
gitk --all
gitk --all
要查看两个不同提交之间的差异(我们将其称为
a
和b
),请使用a
和b 之间的差异
与b
和a
相反。要查看上次提交和尚未提交的更改之间的差异,请使用
如果您希望稍后能够返回差异,则可以将其保存在文件中。
To see the difference between two different commits (let's call them
a
andb
), usea
andb
is opposite fromb
anda
.To see the difference between your last commit and not yet committed changes, use
If you want to be able to come back to the difference later, you can save it in a file.
我使用 gitk 来查看差异:
它有 GUI 模式,因此审阅更容易。
I use
gitk
to see the difference:It has a GUI mode so that reviewing is easier.
最简单的检查拉取后最后 2 次提交的更改:
Simplest for checking the changes in the last 2 commits after pull:
我编写了一个脚本,显示两次提交之间的差异,在 Ubuntu 上运行良好。
https://gist.github.com/jacobabrahamb4/a60624d6274ece7a0bd2d141b53407bc
I wrote a script which displays diff between two commits, works well on Ubuntu.
https://gist.github.com/jacobabrahamb4/a60624d6274ece7a0bd2d141b53407bc
我总是喜欢使用命令行,并且手边有用户友好的工具(带有 GUI)。两全其美。以下是我在 Git 中比较两次提交的方法。
您可以显示两次提交之间的差异,如下所示。
在文本编辑器中编辑 git 配置文件:
在 Windows 中的 Git 配置文件中设置一个适当的 diff 工具(用户友好的),例如 Meld:
可以使用 Chocolatey 从命令行安装 Meld:
让我们定义一个 shell 函数帮助我们比较文本编辑器中 [alias] 下的两个 sha-s(提交):
要借助 Meld(或您最喜欢的其他比较工具)比较提交,只需在命令行中键入:
提交 sha-s 是 容易看到的打字。
例如,
I always love using the command line and have user friendly tools (with GUI) at my hand. Best of both worlds. Here is how I do it to compare two commits in Git.
You can show the diff between two commits like the following.
Edit your git config file in a TEXT EDITOR:
Set up a proper diff tool (user friendly) like Meld like this in Windows in the Git config file:
Meld can be installed using Chocolatey like this from the COMMAND LINE:
Let's define a shell function to help us compare two sha-s (commits) under [alias] in the TEXT EDITOR:
To compare the commits with the help of Meld (or your other favorite diff tool, just type at the COMMAND LINE:
The commit sha-s are easily visible typing
for example.
接受的答案很好。
只是把它再次放在这里,这样就很容易理解和使用了。将来尝试一下,
我对上述所有命令都得到了相同的差异。
以上有帮助
1.查看commit c1和commit c1之间的区别另一个提交 c2
,可用于将更改应用到另一个分支
2.还制作一个显示差异的补丁文件,如果它没有正确显示差异
然后c1 & c2可能取错了
因此,将它们调整为提交前(如 c1 至 c0),或调整为提交后(如 c2 至 c3)
使用 gitk 查看提交 SHA,第 8 个字符足以将它们用作 c0、c1、c2 或c3.您还可以从 Gitlab > 查看提交 ID存储库>提交等。
希望有帮助。
Accepted answer is good.
Just putting it again here, so its easy to understand & try in future
I got the same diff for all the above commands.
Above helps in
1. seeing difference of between commit c1 & another commit c2
2. also making a patch file that shows diff and can be used to apply changes to another branch
If it not showing difference correctly
then c1 & c2 may be taken wrong
so adjust them to a before commit like c1 to c0, or to one after like c2 to c3
Use
gitk
to see the commits SHAs, 1st 8 characters are enough to use them as c0, c1, c2 or c3. You can also see the commits ids from Gitlab > Repository > Commits, etc.Hope that helps.
下面的命令在 Ubuntu 20.04 和 git v2.25.1 上非常适合我:
Command below perfectly works for me on Ubuntu 20.04 and git v2.25.1:
对于最后两次提交,
通过扩展来比较 2 个提交,例如
For the last two commits
by extension to compare 2 commits,that can be for example
假设您在底部(最旧的)还有一个提交,那么这将变得非常简单:
现在,使用下面的内容将轻松达到目的。
Let's say you have one more commit at the bottom (oldest), then this becomes pretty easy:
Now, using below will easily server the purpose.
使用此命令来了解提交和未暂存之间的区别:
Use this command for the difference between commit and unstaged: