问题标签 [git-patch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
74 浏览

git - Git 和添加 -p 问题

我刚刚应用了patch3 个文件,它们diff可以在这里看到:

stack.h stack.cmain.c

任务是将spatch分成不同commit的 s,如注释、许可证、重构等。

为此,我将使用git add -p

  1. 第一个大块头是许可证main.c,微不足道,我按y

  2. 第二块stack.c包含一大块许可证,然后是两块评论。我s分裂然后y n n

  3. 我将在剩下的时间里继续这样做git add -p

但是,它看起来像没有n应用!

为了证实我的怀疑,我会git add -p再次做一个新鲜的,这次我将使用e将成为this

git然后输出fatal: corrupt patch at line 50. 所以基本上我sn试图不上演某些大块头,但最终放弃了这些移除。

+-与(您必须用空格替换该行)不同,应该毫无问题地删除行,对吗?我究竟做错了什么?

0 投票
2 回答
784 浏览

git - 我可以让 git add -p 显示 git diff --word-diff 之类的更改吗?

我已经递归地替换了我的代码库中的许多单字模式。在提交之前,我需要检查每个是否有错误的替换。使用 what uses withgit add -p的格式对我有很大帮助,其中仅标记更改的单词而不是整行。--word-diffgit diff

有人在这里问过同样的问题,但也许它是从那时起实施的? https://groups.google.com/forum/#!topic/git-users/7uO2OUJGvP0

0 投票
1 回答
771 浏览

git - git apply --reject/--include 默认使用 --verbose 吗?

我懂了

总是打印关于哪些文件被考虑和拒绝从补丁文件传递的完整信息。因此,选项通过--verbose时似乎 git 使用的模式。--reject

选项是否--verbose打印了--reject 选项未打印的任何其他信息?我也没有在git-apply文档中找到任何相关细节。

0 投票
1 回答
1075 浏览

git - 如何手动将 Github 存储库克隆到我的 PC?

由于防火墙/代理规则,我还无法理顺我在工作流程中使用现有工具(Visual Studio Git、Git Extensions)访问公共 Github 站点(github.com)时遇到问题。

同时,我想在本地手动复制 Github 存储库。我希望有一种我只是缺少的方法来做到这一点(使用 ZIP 下载?)我意识到还有 Git 命令可以创建补丁(git-format-patch 和 git-bundle,请参阅此答案),但我看不到任何方法可以在 Github 网站上创建它们。当我获取下载的 .zip 文件时,没有 .git 文件夹 - 也许我不需要它?

问:有没有办法在本地 PC 上手动复制 Github.com Git 存储库,而不使用克隆选项?

我尝试使用 Git 扩展创建一个裸存储库,所以我已经有一个 .git 文件夹 - 我可以将 zip 的内容转储到该文件夹​​中吗?我很担心,因为我想引入除 master 之外的分支,并且我目前可以在 .git reference master 中看到一些文件,而且这也可能不会引用所有分支(尽管这可能无关紧要)。

我相信我需要 git 补丁或捆绑文件,但不确定如何在 Github 上创建它们。我可以在防火墙外的个人电脑上使用sneakernet,但应该可以从Github上下载——对吧?

注意:我可以访问 Github.com 网站,只是无法通过工具正确完成克隆,可能是因为它们没有登录到我们的身份验证器(即通过 SAML/SSO)。我尝试使用 oauth 等,但它不能直接工作。无论如何 - 应该有一种方法可以完成手动克隆,我想了解如何做到这一点。

0 投票
1 回答
645 浏览

git - 是否可以从一个目录创建一个 git 补丁并将该补丁应用到不同的目录?

我正在尝试从一个目录创建补丁并将该补丁应用于不同的目录,前提是两个目录都包含相同的文件。

例如:考虑一下,repo-1 /local/mnt/workspace/New_version/sample_dir/包含 File1、File2 和 File3。

考虑一下,repo-2 /local/mnt/workspace/old_version/包含 repo-1 中提到的相同文件集。

现在,我正在尝试从 repo-1 创建一个补丁集并尝试将其应用于 repo-2,由于路径冲突而引发错误。

有什么方法可以满足我的要求吗?请帮忙 !

0 投票
1 回答
106 浏览

git - 如何在不重新创建它的原始结构的情况下应用 git 补丁

我正在尝试将此补丁应用于文件(bi_janrain_data/js/bi_janrain_data.js):

但它给了我这些错误:

我也试过这个:

0 投票
1 回答
99 浏览

git - 跨多个项目使用 git 标签管理不同的软件版本

我最近遇到了一个我无法完全解决的问题。我们公司在许多其他项目中开发了一组以一个为中心的项目——我们称之为引擎。该引擎包含使用 MVC 框架 yii 的大部分代码库。还有多个其他项目使用该引擎作为其基础。虽然它们也可以包含唯一代码,但它们主要使用或扩展引擎中的方法和类,专门为客户的规范(在合理范围内)量身定制。这些项目虽然相似,但可以包含独特的部分,使它们彼此不同。我想说每个项目都有 30-40% 的代码库是他们独有的。

在过去的几个月里,我们在发布和更新方面遇到了一些困难。每当客户请求新功能时,我们必须以不干扰其他项目的方式开发它。大多数时候这不是问题,但有时会导致意外错误或延长开发时间。

尽管如此,最令人头疼的还是在发布之前。虽然我们可以及时推出它们,但测试新代码对所有项目的影响可能会花费比我们想要的更多的时间(我们正在编写单元测试和硒测试以使过程更快,而且还因为如果我们想管理这么大的代码库并保持理智,这是合理的做法......不幸的是,我们严重落后,因为管理层认为我们以后总能做到......)。

我们使用 git 作为我们的版本跟踪系统,它应该能够处理这样的事情,至少我希望如此。我们的首席程序员管理着许多具有相似结构的项目:多个站点运行在一个中央引擎上(这两个引擎是为两个完全不同的目的而设计的)。几年前他遇到了同样的问题,并开始使用 git 标签来管理更重要的版本。一些客户的站点使用引擎的 1.3 版本,其他的 1.4 等等。虽然这个系统使推送更新和错误修复变得更容易和更快,但我认为从长远来看它并不实用。或者这是最佳实践。

似乎“我的”引擎应该使用相同的系统,所以我们可以享受更快的开发周期,但我想知道是否有更好的方法。

我的主要问题是:我们能跟上这种方法多久?虽然我理解只将新代码推送到需要它的项目的优势,但为每个主要功能创建一个新版本似乎很快就会失控。

此外,我们应该如何处理现有代码的修复和更新?我的理解是在 1.2 上修复某些东西并不能修复 1.3 和 1.4 上的错误 - 还是我弄错了?还是我应该在 1.4 上修复它?有没有一种我可以选择的方法可以轻松地将特定更改应用于旧/新版本,因此我不必多次进行相同的更改?在旧版本上启用为 1.5 编写的函数怎么样?

我开始考虑使用补丁来为每个需要它们的版本提供修复,但我不确定这是否是个好主意。

还是我应该只说“去他妈的”并仅修复最新版本的错误,逐个升级项目,以便在我们确保它们不会破坏该特定系统上的任何东西时他们会收到修复?

我迷路了。虽然我找到了关于 git 标签和补丁的资源,但我觉得我还没有找到解决问题的真正方法。一个是有用的,不会破坏任何东西(我 99% 确信我们必须保持一个支持多个项目的中央引擎的当前设置),并且是可持续的。目前我们只谈论围绕引擎构建的少数几个站点,但今年已经有更多的计划,随着开发时间的缩短,这个数字只会增加。

我希望你们中的一些遇到并解决了这个问题的人可以帮助我——我将非常感激(知道有解决方案,我松了一口气……)。

提前感谢您的帮助-当我说您会帮助我保持理智时,我不是在开玩笑。

0 投票
0 回答
35 浏览

git - 如何应用此补丁文件

这里的这篇文章中有一个看起来像是补丁文件的东西。我尝试将该文本复制到一个changes.patch文件中,clone将 repocd复制到克隆的 repo 中,然后执行 a git apply --check ../changes.patch,但我只是得到:

上面帖子中的文字实际上适合作为.patch文件吗?我可以应用它的任何其他方式(不诉诸手动方法......在这种情况下不会太费力,但我想知道如何正确地做到这一点)。

0 投票
1 回答
294 浏览

c# - 致命:直接从 C# 执行 git diff 时出现不明确的参数 '>' 错误

我正在尝试在 C# 中执行以下操作:

  1. 获取两个分支之间的差异。
  2. 重定向补丁文件中的输出。
  3. 签出一个新的空分支。
  4. 将补丁文件应用到这个新分支。
  5. 添加文件并将此分支提交到远程仓库。

我正在运行的当前 git 命令:

虽然这在 git bash 中可以正常工作,但在从 C# 执行时却不行,并且我收到 diff 命令的以下消息:

在此处输入图像描述

编辑:

我用来运行上述每个命令的 C# 方法如下:

它是这样调用的:

注意:我在项目的其他部分使用 LibGit2Sharp,但在这种特定情况下,我无法使用它,因为 LibGit2Sharp 没有实现git-apply

0 投票
1 回答
991 浏览

git - git add -p(交互式补丁)和编辑模式给出“第 XX 行损坏的补丁”错误

我将我的更改添加到提交中git add -p,现在我想使用手动大块编辑模式。

我只是有这个大块:

如果我完全删除添加的行(使用console.log)然后保存并退出编辑器,我会收到此错误:

我完全不知道我做错了什么。