我在回购中有一堆提交.我想看到两个提交之间更改的文件列表 - 从SHA1到SHA2.
我应该使用什么命令?
我有两个分支.提交a是一个头,而其他有b,c,d,e和f之上a.我想移动c,d,e和f第一支没有提交b.使用樱桃挑选很容易:结帐第一个分支樱桃 - 一个接一个c地挑选f第二个分支到第一个.但有没有办法挑选所有c- f一个命令?
这是场景的直观描述(感谢JJD):

一些Git命令采用提交范围,一个有效语法是用两个点分隔两个提交名称..,另一个语法使用三个点....
两者有什么不同?
我在Ubuntu 10.04(Lucid Lynx)上使用Git .
我已经向我的主人做了一些提交.
但是,我希望得到这些提交之间的区别.所有这些都在我的主分支上.
例如:
commit dj374
made changes
commit y4746
made changes
commit k73ud
made changes
Run Code Online (Sandbox Code Playgroud)
我想得到k73ud和dj374之间的区别.但是,当我做了以下操作时,我无法看到我所做的更改k73ud.
git diff k73ud..dj374 > master.patch
Run Code Online (Sandbox Code Playgroud) 我注意到以下git命令的两个块有不同的行为,我不明白为什么.
我有一个A和B分支,一个提交分歧
---COMMIT--- (A)
\
--- (B)
Run Code Online (Sandbox Code Playgroud)
我想在最新的A上重新绑定B分支(并且在B分支上有commit1)
---COMMIT--- (A)
\
--- (B)
Run Code Online (Sandbox Code Playgroud)
如果我这样做没问题:
checkout B
rebase A
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
checkout B
rebase --onto B A
Run Code Online (Sandbox Code Playgroud)
它根本不起作用,没有任何反应.我不明白为什么这两种行为是不同的.
Phpstorm git客户端使用第二种语法,所以在我看来完全破坏了,这就是我要求这个语法问题的原因.
在Linux中,我最喜欢的合并工具是Meld,我使用或配置它与Git一起工作时没有任何问题.然而,在Windows中它是一个不同的故事.
首先,我从我在这里找到的软件包中安装了Meld:https://code.google.com/p/meld-installer/
然后,我配置了我的.gitconfig,以支持Meld作为默认的mergetool
[merge]
tool = meld
[mergetool "meld"]
path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe
keepBackup = false
trustExitCode = false
Run Code Online (Sandbox Code Playgroud)
所以,当我遇到冲突时,我会做git difftool而Meld确实打开了.但是,Git写入传递给diff工具的文件的路径不正确.例如,即使Git在存储库目录(我称之为git mergetool的位置)中生成BASE,LOCAL和REMOTE文件,Meld也会尝试打开可执行文件目录中的每个文件.
Meld尝试打开C:\ Program Files(x86)\ Meld\meld\roses.txt.LOCAL.2760.txt,而不是打开C:\ repo\roses.txt.LOCAL.2760.txt.
有没有人遇到过这个或知道如何配置Git/Meld在Windows中正常工作?
有没有办法只看到git log分支创建后添加的提交或其他命令?
usage: git log [<options>] [<since>..<until>] [[--] <path>...]
or: git show [options] <object>...
--quiet suppress diff output
--source show source
--decorate[=...] decorate options
Run Code Online (Sandbox Code Playgroud) 我想检查远程分支和本地分支之间的真正差异.我怎样才能做到这一点?
发出以下命令部分有效,但它也显示了我本地分支的新变化的差异.
git diff remote/branch
Run Code Online (Sandbox Code Playgroud) 当我遇到使用合并冲突时git rebase,如何根据提交识别冲突的来源,而不仅仅是文件差异?
我已经知道如何使用(git mergetool或基本)使用或git add之前git rebase --continue,但有时文件之间的差异是不够的:我想看到提交的提交日志和差异,但未能应用于工作树.
我已经读过其他问题,git log --merge如果我使用的话会显示父提交git merge.当我遇到冲突并被告知时,我还是尝试过fatal: --merge without MERGE_HEAD?.
如何识别有问题的提交?
我想看看master分支和我的功能分支之间的区别.我有很多从主服务器到我的功能分支的东西,并希望看到如果我将我的功能合并到主服务器中将添加的更改.
这是我的情况:
-*--*--*-----*<master>
\ \ \
1--*--*--*--2--*<feature>
Run Code Online (Sandbox Code Playgroud)
我的问题是git diff master feature似乎只显示提交号2.我想看到一个github pull请求将显示的差异,我相信这是提交的所有方式1.我注意到git cherry显示我提交的我希望看到的区别为.
谢谢你的建议.
git ×10
git-diff ×4
git-rebase ×3
git-log ×2
cherry-pick ×1
diff ×1
git-show ×1
github ×1
meld ×1
merge ×1