相关疑难解决方法(0)

'git pull'和'git fetch'有什么区别?

主持人注意:鉴于此问题已经发布了67个答案(其中一些已删除),请考虑在发布另一个问题之前是否提供任何新内容.

git pull和之间有什么区别git fetch

git version-control git-pull git-fetch

1万
推荐指数
41
解决办法
269万
查看次数

Git diff对付藏匿处

如何查看取消对当前工作树的更改?我想知道在应用它们之前会做出哪些改变!

git git-stash

1265
推荐指数
12
解决办法
32万
查看次数

有没有git-merge --dry-run选项?

我正在合并一个可能有很多冲突的远程分支.我怎么知道它是否会有冲突?

我没有看到像什么--dry-rungit-merge.

git git-merge

681
推荐指数
13
解决办法
17万
查看次数

git可以告诉我合并是否会在没有实际合并的情况下发生冲突?

是否可以在不触及工作树的情况下知道合并是否会发生冲突?我不想触摸工作树,因为我不想让它签出.如果我想在几个分支机构看到这些信息,那将需要很长时间.

git

176
推荐指数
4
解决办法
8万
查看次数

如何在没有合并的情况下在Git中执行三向差异?

我想在具有公共合并基础的两个git分支之间执行三向差异,并使用kdiff3查看它.

我发现很多指导对SO(和一些非常相似的问题(1,2,3)),但我还没有找到一个直接的答案.值得注意的是,对这个答案的评论意味着我想要的是可能的,但它对我不起作用.希望用户可以在这里ch :) :)

对于背景,当我执行合并时,我使用"diff3"冲突样式:

git config --global merge.conflictstyle diff3

我已git mergetool配置为使用kdiff3.

解决合并冲突时,这会显示四个文件:

  1. 当前分支的文件($ LOCAL)
  2. 另一个分支的文件($ REMOTE)
  3. 该文件是两个分支的共同祖先($ BASE)
  4. 合并的输出文件($ MERGED)

但是,git difftool只会拉起两个分支提示.我也希望看到基本文件. 为了清楚起见,我希望能够合并之前执行此差异,包括没有合并冲突的文件.(git mergetool如果存在冲突,则仅显示三向差异).


部分解决方案#1:

使用单个文件,我可以导出三个版本并手动调用diff:

git show local_branch:filename > localfile
git show remote_branch:filename > remotefile
git show `git merge-base local_branch remote_branch`:filename > basefile

{kdiff3_path}/kdiff3.exe --L1 "Base" --L2 "Local" --L3 "Remote" -o "outputfile" basefile localfile remotefile &
Run Code Online (Sandbox Code Playgroud)

这有两个问题:

  1. 我希望它适用于整个项目,而不仅仅是一个特定的文件.
  2. 这太丑了!我可以编写脚本,但我希望使用标准的git进程有一个更清晰的方法. …

git version-control diff merge

23
推荐指数
1
解决办法
4578
查看次数

搜索共享文件的git分支

我想在git分支中搜索我和所有其他文件之间共同修改的文件,作为早期冲突检测的方法.有没有一种方法让git允许我这样做,我忽略(或通过shell脚本)?

我现在想到的方法是作为post-commit钩子:

  1. git diff --name-only master在我正在的分支上执行a ,以确定我将在其他分支中搜索的所有文件(以生成冲突分支的列表)
  2. 通过远程存储库搜索/ grep'ing我在每个人的其他远程分支中获得的每个文件(在上一步中)git diff --name-only origin/<remote branch> origin/master
  3. 根据search/grep的结果返回包含一个或多个冲突文件的分支列表.

git diff git-diff merge-conflict-resolution

8
推荐指数
1
解决办法
204
查看次数

看看在一个git命令中合并的内容是什么?

目前,在合并分支之前,我使用以下命令来查看要合并的更改:

base=$(git merge-base other HEAD)
git diff $base other
Run Code Online (Sandbox Code Playgroud)

是否有一个git命令来实现这一目标?

此致,Jochen

git merge

7
推荐指数
1
解决办法
1075
查看次数

我怎么能相信Git合并?

我不确定我是否可以信任Git自动合并.这是一个场景.

在master中创建一个程序:

    MOVE 0 TO I.
A.
    PERFORM X-PROC.
    IF I IS EQUAL TO 25 THEN GO TO A.
Run Code Online (Sandbox Code Playgroud)

开发人员1创建了一个分支,并注意到存在一个错误:无限循环.他解决了这个问题:

    MOVE 0 TO I.
A.
    ADD 1 TO I.
    PERFORM X-PROC.
    IF I IS EQUAL TO 25 THEN GO TO A.
Run Code Online (Sandbox Code Playgroud)

与此同时,Developer 2创建了一个分支并以自己的方式修复了错误:

    MOVE 0 TO I.
A.
    PERFORM X-PROC.
    ADD 1 TO I.
    IF I IS EQUAL TO 25 THEN GO TO A.
Run Code Online (Sandbox Code Playgroud)

两位开发人员都会测试他们的代码并发现它 两者合并到主人:

    MOVE 0 TO I.
A.
    ADD 1 TO I.
    PERFORM X-PROC.
    ADD 1 TO …
Run Code Online (Sandbox Code Playgroud)

git merge

6
推荐指数
1
解决办法
1081
查看次数

如何防止Git pull删除本地文件

找不到我的问题所以我想我会问。

我自己和另一个人正在开发这个仓库。我的本地克隆是最新的。

我的伙伴删除了文件“example.txt”,提交并推送了它。

第二天我进来,执行 git status(最新),然后执行 git pull。它从我的本地存储库中删除“example.txt”。

问题是我需要该文件,但我的伙伴不小心删除了它。

我该如何防止将来再发生这种情况?有没有办法让 git pull 在删除某些内容之前先警告我?

因此,我尝试先执行 git fetch,然后执行 git status,但它并没有表明如果合并,我将删除文件。

git git-pull git-merge git-status merge-conflict-resolution

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

如何在 git pull 之前预览更改

我想检查运行 git pull 后将对文件进行的更改。我知道我们用来git fetch从远程存储库检索新对象而不更改本地存储库。但是我如何在编辑器中查看这些更改?

git github git-fetch

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

合并时,Git 是否只考虑提交的时间戳而不是它属于哪个分支?

我在 Git 中有两个主要分支:masterdev.
我的分支结构如下所示:

B-->E-->F-->G (master branch)

B-->C-->D-->H-->I-->J-->K (dev branch)
Run Code Online (Sandbox Code Playgroud)

之前,我进行了合并,masterdev有一个共同的母公司B
在提交EFG掌握的,我删除了一些文件(说foobar)不正确,而他们在提交仍然存在C起在dev分支。
结果,当我执行三向合并以加入GK创建 commit 时LL不再包含 foo 和 bar !Git 没有以任何方式通知我他们的失踪。

在我看来,由于EFG进行了简单的重播后提交C因此foobar都不见了。

Git 合并的这种行为对我来说很奇怪。因为我无法知道是否有人从另一个分支删除了一些文件。
我不应该至少在合并时收到有关任何冲突修改的通知吗?

git github

4
推荐指数
1
解决办法
1566
查看次数