标签: git-diff

GitHub如何形成拉取请求

我有一个分支,它已经将master合并了几次(以获得对该功能分支的最新错误修复).现在我想看看我在那个分支开始工作后所做的所有改变,所以我试过了git diff start_commit..HEAD.但是我注意到git也显示了那些合并的提交,所以这不是我想要的.

然后我尝试从该分支创建一个pull请求,看看是否同样适用于GitHub的pull请求,但是注意到pull请求只显示我想要的更改.

分支看起来像这样

master: A---B---C---D---E---F
         \       \       \
feature:  G---H---I---J---K---L
Run Code Online (Sandbox Code Playgroud)

问题是git diff A..L显示来自AL的所有提交,但是GitHub的pull请求只显示GL,这就是我想要的.

那么GitHub用来形成拉取请求的命令(或命令)是什么?

编辑:添加了图片

git github git-diff pull-request

5
推荐指数
1
解决办法
216
查看次数

如何在Git中查找特定文件中的特定更改

我在Git项目中有一个文件,某个特定值在某个时候被某人改变了; 我不知道是谁或何时.我想知道改变的时间,但我不确定如何在Git中跟踪它.

我尝试过使用git diff <sha1> <sha2>,但这显示了整个项目的差异,而我想检查一个特定的文件.

git git-diff blame

5
推荐指数
3
解决办法
5029
查看次数

如何仅为更改特定文件的提交生成/应用git补丁

我有两个git repos,它们是彼此的分叉,我需要偶尔将提交从一个提交到另一个.

例如:

git-repo1 有这个目录结构:

repo1/project1/src

repo1/project2/src

while git-repo2具有以下目录结构:

repo2/src/

我想要做的是进行一系列提交并仅为改变特定子目录(例如repo1/project1/src)中的文件的提交生成补丁,并忽略所有仅在其他地方改变文件的提交.

或者,为所有提交生成修补程序,但仅在应用程序修改特定目录中的文件时应用修补程序.

我需要保留有关提交的元数据,因此使用git diff它似乎不是一个可行的选项.

forked git repos之间的目录结构不同.

有没有直接的方法来做到这一点?

UPDATE1

在处理不同的目录结构方面,我看到了这个问题(如何将git补丁从一个存储库应用到另一个存储库?)

但是,如果修补程序谈到修改根本不存在的文件会怎么样?我想忽略这些变化.

git git-diff git-patch

5
推荐指数
1
解决办法
3305
查看次数

GitHub for Windows表示即使差异为空,也存在未经修改的更改

我正在使用GitHub for Windows客户端,现在它似乎表明即使diff是空的,也存在未经修改的更改.

我已经尝试提交空差异,但我仍然一遍又一遍地得到同样的东西.

我输入git status了Shell,这就是我得到的:

C:\Users\Nicholas\Documents\GitHub\Vesper.next [master +0 ~6 -0]> git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified:   LICENSE.txt
modified:   README.md
modified:   v.next/css/ext-styleNext.css
modified:   v.next/js/ext-globalVariables.js
modified:   v.next/js/modernizr.js
modified:   v.next/js/numeric.js

no changes added to commit (use "git add" and/or "git commit -a")
C:\Users\Nicholas\Documents\GitHub\Vesper.next [master +0 ~6 -0]>
Run Code Online (Sandbox Code Playgroud)

这是输出git diff:

C:\Users\Nicholas\Documents\GitHub\Vesper.next [master +0 …
Run Code Online (Sandbox Code Playgroud)

git git-diff github-for-windows

5
推荐指数
1
解决办法
1222
查看次数

如何强制`git diff`按原样呈现空格

每当我运行时git diff,它会输出更改日志,并将选项卡转换为空格.是否有任何设置会强制git将这些字符原封不动地呈现在原始文件中?

git git-diff

5
推荐指数
0
解决办法
99
查看次数

为什么我不能使用git log --follow与--full-diff?

git log --follow <myfile>显示git log一个文件.

我想在此文件中看到包含所有更改(差异)的日志.我尝试:

git log --full-diff --follow <myfile>
Run Code Online (Sandbox Code Playgroud)

但这失败了:

fatal: --follow requires exactly one pathspec
Run Code Online (Sandbox Code Playgroud)

为什么?我怎样才能得到我想要的差异?

或许,它是git中的错误吗?

git git-diff git-log

5
推荐指数
1
解决办法
1303
查看次数

打印不相似的百分比

有时,当您彻底更改文件时,会触发重写:

yes | head -256 > pa.txt
git add .
git commit -m qu
truncate -s128 pa.txt
yes n | head -64 >> pa.txt
git commit -am ro
Run Code Online (Sandbox Code Playgroud)

结果:

[master 79b5658] ro
 1 file changed, 128 insertions(+), 256 deletions(-)
 rewrite pa.txt (75%)
Run Code Online (Sandbox Code Playgroud)

但是,对于较小的更改,这不会发生:

yes | head -128 > pa.txt
git add .
git commit -m qu
truncate -s64 pa.txt
yes n | head -32 >> pa.txt
git commit -am ro
Run Code Online (Sandbox Code Playgroud)

结果:

[master 88ef937] ro
 1 file changed, 32 insertions(+), 96 …
Run Code Online (Sandbox Code Playgroud)

git git-diff git-commit git-diff-tree

5
推荐指数
1
解决办法
561
查看次数

写git diff HEAD ^ HEAD是一种较短的方式吗?

我发现自己经常打字,就像我做了一些改变,提交它,然后要么查找我在那里做的事情以确定接下来要做什么,或者确保我没有添加任何意外的提交在将它推到遥控器之前.

不可否认,diff HEAD^ HEAD类型(git diTABHTAB^ HTAB)足够快,但仍然觉得应该有更好的方法.

如何最简单地查看上次提交中所做的所有更改?

git git-diff

5
推荐指数
3
解决办法
925
查看次数

git diff如何更改Rails 5.2凭证?

我希望能够将更改的内容与加密的内容进行比较config/credentials.yml.enc

git diff仅显示加密文件内容的区别。我想看看明文的变化。

如何获得config/credentials.yml.enc文件的可读差异?

git ruby-on-rails credentials git-diff ruby-on-rails-5.2

5
推荐指数
1
解决办法
672
查看次数

通过git diff了解xfuncname

我想知道如何git diff将提供给xfuncname的表达式精确地应用于结果,以及是否有可能将对大块头文本的搜索委派给另一个程序。

上下文:我想为我更改xfuncname设置,git diff以显示xml文件的可用输出。如下所示的示例xml:

<layer1-1>
</layer1-1>
<layer1-2>
    <layer2-1>
    </layer2-1>
    <layer2-2>
    </layer2-2>
    <layer2-3>
        <layer3-1>
            [...]
            changes
            [...]
        </layer3-1>
        <layer3-2>
        </layer3-2>
        <layer3-2>
        </layer3-2>
    </layer2-3>
</layer1-2>
<layer1-3>
</layer1-3>
Run Code Online (Sandbox Code Playgroud)

理想情况下,带有修改后的块头的输出看起来像这样

@@ -15 +15 @@ <layer1-2><layer2-3><layer3-1>
[...]
-notchanged
+changed
[...]
Run Code Online (Sandbox Code Playgroud)

我的观察结果表明,git diff将正则表达式应用于差异之前的文件部分,获取最后一个匹配项,并从第一个捕获组开始匹配;它使用m标志。这是一个合适的描述吗?

由于RE2显然既不支持反向引用,也不支持前瞻,所以我不确定通过这种方法是否可以归档我尝试执行的操作。有没有一种方法可以指定一个定制程序/脚本来接收diff作为输入,以便我自己指定一个大块头?

regex git git-diff re2

5
推荐指数
1
解决办法
140
查看次数