我想合并两个已分开一段时间的分支,并想知道哪些文件已被修改.
遇到这个链接:http://linux.yyz.us/git-howto.html这非常有用.
比较我遇到的分支的工具是:
git diff master..branchgit log master..branchgit shortlog master..branch想知道是否有类似"git status master..branch"的东西只能看到两个分支之间不同的文件.
在没有创建新工具的情况下,我认为这是您现在可以做到的最接近的工具(如果文件被多次修改,当然会显示重复):
git diff master..branch | grep "^diff"想知道是否有我遗漏的东西......
我正在使用git并在master分支上工作.这个分支有一个名为的文件app.js.
我有一个experiment分支,我做了一堆变更和大量的提交.现在我希望把做只对所有变化app.js从experiment到master分支.
我怎么做?
再一次,我不想合并.我只是想把所有的变化app.js从experiment分支带到master分支.
虽然这个问题和答案中的大部分信息都可以在StackOverflow上获得,但它分布在许多页面以及其他错误或误导性的答案中.我花了一段时间拼凑出我想知道的一切.
有很多不同的程序可以用作你的git difftool和mergetool,对于哪个是最好的(意见,要求和操作系统明显不同)肯定没有共识.
Meld是一个流行的跨平台(UNIX/Linux,OSX,Windows)选择,如StackOverflow问题所示,什么是Git最好的可视化合并工具?其中提出梅尔德的答案的答案是其他任何工具的3倍以上.
我的答案将在下面回答以下两个问题:
注意:没有必要使用与difftool和mergetool相同的程序,可以为两者设置不同的程序.
我在这篇文章中关注了JörgWMittag 的回答,并将meld配置为我的git中的difftool.现在,我可以使用此命令完美地查看和比较不同分支中文件的差异:
git checkout branch1
git difftool branch1:file.f90 branch2:file.f90
Run Code Online (Sandbox Code Playgroud)
我执行了上面的命令,制作并保存了变化.但是,当我使用以下方法检查文件时:
emacs file.f90
Run Code Online (Sandbox Code Playgroud)
我之前在meld中所做的更改根本没有保存.我不明白为什么会这样; 我必须没有完全正确配置融合作为差异工具.任何人都可以帮我解决这个问题吗?谢谢!!
我有一个git存储库(包含或多或少的项目历史记录)和单独的源代码(只是一个包含少量文件的tarball),它们已经分了一段时间(实际上在2004年或2005年的某个地方).
tarball的来源经历了很多变化,我想从中加入一些变化.现在的问题是 - 如何找出变化的源的实际分支点,以获得最小的差异.
所以我基本上想要的是在git历史中找到位置,其中代码与我拥有的源代码的tarball最相似.我不想手动这样做.
还值得一提的是,更改的源仅包含文件子集,并将一些文件拆分为更多.然而,那里的代码似乎只得到了很小的修改和几个补充.
如果你想自己玩这个,有源的tarball就在这里,Git在Gitorious托管:git://gitorious.org/gammu/mainline.git
我想使用meld作为git的diff工具.
如果我这样配置.gitconfig:
[difftool]
prompt = false
[diff]
tool = meld
Run Code Online (Sandbox Code Playgroud)
并运行命令:$ git difftool
然后git为每个有更改的文件打开一个meld窗口.
但我希望在meld列表框中显示一个包含所有文件的窗口.我已经阅读了一些关于-d或--dir-diff选择的内容.
当我尝试:$ git difftool -d
然后打开一个窗口,每个meld部分中有一个目录树,但是包含空目录.
我无法从这里打开我的文件.

有关信息:
$ git --version
git version 1.9.1
$ meld --version
meld 1.8.4
$ lsb_release -d
Description: Ubuntu 14.04.2 LTS
Run Code Online (Sandbox Code Playgroud)
我git svn也在使用,但我不认为这与我的问题有关; 因为据我所知git-svn,我的目录是一个简单的git目录.
相关问题:
查看分支与融合的差异?
从任意修订版中提取blob(文件)很容易git show,例如:
git show master:src/hello-world.c > /tmp/hello.c
Run Code Online (Sandbox Code Playgroud)
但是,我想知道在git中是否有类似的方法来提取树(目录)以及递归下的所有内容?
我已经编写了一个小脚本来执行此操作,因此我将其添加为可能的答案.看来这可能是git内置的那种东西,但我只是不知道如何找到它...
我在Ubuntu 10.04上使用GIT作为我的DVCS.只需运行:
meld .
Run Code Online (Sandbox Code Playgroud)
在您当前的工作目录中是非常棒的...显示从您的工作文件夹到上次提交的差异.
我希望能够在其他情况下做同样的事情.假设我想在获取远程分支后查看更改?我该怎么办?我怎样才能看出两个地方分支机构之间的差异......我很想知道是否有一种相对简单的方法可以做到这一点.
谢谢.
git ×10
meld ×4
git-diff ×2
branch ×1
diff ×1
difftool ×1
git-branch ×1
git-checkout ×1
git-config ×1
git-difftool ×1
git-stash ×1
search ×1