问题标签 [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 投票
2 回答
2812 浏览

git - git cherry-pick 和 git format-patch 有什么区别?是吗?

我有时需要在我的分支中挑选一个带有特定修复的标签,并且过去常常通过

这行得通,但是挑选樱桃需要越来越长的时间来进行“不精确的重命名检测”。

我的预感是,这可能会更快

事实上,事实证明,这立即应用了修复,使我的分支处于与樱桃采摘完全相同的状态。

现在我的问题是,樱桃采摘到底有什么不同?我以为樱桃采摘基本上就是这样实现的,但我一定是弄错了。

0 投票
2 回答
3369 浏览

git - 如何应用 /patches 文件夹中的所有 git .patch 文件 - npm

TL,博士;

我正在寻找一个 git 命令、bash 脚本或 npm 方法(脚本)来获取.patch文件夹中的所有文件并运行

到目前为止我已经尝试过:


上下文(我将使用它)

目前正在从事一个大型项目,使用相当多的库。我们使用 webpack,前端是 Angular.js,后端是 Yii2。因为开发人员同时使用 linux 和 windows,所以项目是在 docker 映像中编译的。

到目前为止,每当我们需要对库进行更改时,我们都会对其进行 fork 并在以下位置指定 fork package.json

并且......它有效。

我最近发现了一种可以说将补丁应用于模块的更好方法,即patch-package. 简而言之,它避免了分叉,将更改保存在.patch文件中。

但是,创建补丁文件是不够的。在部署时,还需要在构建之前应用它。在部署脚本中转换为以下行:

必须在运行之前运行npm run build

而且,它再次起作用。


问题

我正在寻找一种方法来自动获取文件patches/夹中的每个文件并应用它们,而不必一个一个地指定它们。因此,每当.patch在补丁文件夹中推送新的(或修改现有的)时,它都会在构建之前自动应用于包,而无需更改部署脚本。

我发现这个问题似乎暗示

可能会成功(当然是在 docker 控制台内)。但是,man页面上git-am说:

从邮箱应用一系列补丁

什么邮箱?我想应用文件夹中的更改。尝试该am命令,控制台抱怨不知道我是谁(想要电子邮件和密码)。

我是否需要将其视为创建 bash 脚本(.sh文件)、从文件夹中读取所有文件并在 中运行多个git apply命令的简单案例for

有没有更多的“git”-ish方式/命令?
使用 npm 脚本执行此操作是否更有意义?

0 投票
1 回答
25 浏览

git - git - Saving My Committed Work and Applying it to New and Fresh Clone of Repo

I was working on some functionality on my-branch and I have to stop and move on but the work on my-branch is not completed and another developer will take it ower.

I also dont want to push my-branch work to remote yet. Just want to be able to somehow save it and send it as a zip or so to the developer so he can apply it to his fresh clone and continue working on it.

I know of git stash but that is for stashing uncommitted changes, it does not sound like something I need.

How can I do this in git?

0 投票
1 回答
29 浏览

git - 是否可以用“统一”补丁替换来自 git 中不同提交的文件?

我有一个带有不同标签/提交的 git 存储库,我想替换一个 Makefile(每个版本都不同)。

在所有这些版本中都有我自己的 Makefile。
是否可以只编写一个可应用于所有这些提交/标签的补丁文件,这些提交/标签将“删除”单个 Makefile 并“插入”我的?

0 投票
0 回答
43 浏览

git - Git补丁并计算SHA

为了避免 XY 我将解释我的目标:

我正在编写一个RunManager,它应该执行给定版本的进程。我想添加一个选项以使用当前目录内容(包括未提交的更改)运行进程,并以某种方式用确定性名称标记这些更改。

我在想的是创建一个 git 补丁,给它一个 SHA 就好像它是一个 commit,将它复制到远程服务器并应用。

我怎样才能实现 SHA 部分?

0 投票
2 回答
1305 浏览

git - git am:补丁格式检测失败。git apply 也失败了

我正在尝试学习 git 补丁,所以我设置了一个测试仓库并进行了一些提交。

然后我创建了一个补丁:git format-patch -1 HEAD --stdout > changes.patch

接下来,我检查了一个新分支并尝试使用 changes.patch: git am .\changes.patch。它给了我错误Patch format detection failed.

我在这里搜索,发现了这个相关的问题

所以我尝试了git apply .\changes.patch。它给了我error: unrecognized input

补丁文件对我未经训练的眼睛来说似乎很好:

我认为可能是补丁与 repo 位于同一目录中,因此我将其移至另一个目录。结果是一样的。

我也注意到很多人<在命令中有一个,所以我试了一下:git am < ..\changes.patch. 显然这不是有效的语法。

这是在带有 PowerShell 的 Windows 上使用 64 位 git。

有任何想法吗?

0 投票
1 回答
142 浏览

git - git checkout -p 指定编码

我正在使用存储库中的混合编码文件。

我的系统 $LANG 是en_US.UTF8,文件编码是iso-8859-1。当我运行git checkout -p HEAD filegit 时,使用UTF8向我展示差异。

我看到这样的事情:

问题是,“�”不是文件的正确内容。当我跑步时,iconv -f iso-8859-1 -t UTF8 file | less 我看到

当我在运行时接受或放弃更改时,git checkout -p我想确切地查看更改了哪些字符而不是“�”字符,这是无用的。我该怎么做?

0 投票
0 回答
2114 浏览

git - git apply patch 排除 2 个文件

你如何 git 应用补丁但排除 2 个文件?对于 1 个文件或文件模式,您可以--exclude标记。但是,如果我有 2 个不同的文件a.rb并且b.rb我需要排除但我有c.rb, d.rb,e.rb也在需要应用的补丁中怎么办。

0 投票
1 回答
43 浏览

git - 如何使用我自己的 diff 工具和 `add --patch` 之类的?

我使用一个名为diffr的另类差异工具,如下所示:

在添加和签出代码时,我的正常工作流程也通常使用--patchand标志。--interactive

但是,该--patch开关似乎使用默认值(colordiff?)而不是 diffr。

在这种情况下(以及我可能没有想到的任何其他工具),我如何强制 diffr 作为 diff 工具?

0 投票
2 回答
261 浏览

c++ - 如何在 C++ 中以最佳方式序列化两个文件夹的差异

我正在尝试为diff文件夹中的多个文件递归开发一种文件格式。考虑一个包含修补文件的源目录和一个包含原始文件的目标目录。编写一个大小最小的diff文件,表示源目录和目标目录中所有文件之间的差异,可应用于原始文件,以便将原始文件转换为修补文件。

为此,我找到了dtl图书馆。我应该使用库的哪个算法或功能将文件写入diff磁盘,然后我可以稍后读取并应用以修补文件?有任何示例代码吗?我尝试将shortest edit script( SES) 的结果写入磁盘,但我意识到我需要为每个字节指定字符和操作。这当然会使输出文件大于整个比较文件,使这种差异格式完全多余,因为存储整个目标文件会节省更多存储空间。

git作为另一个参考,这与版本控制系统的喜欢或操作方式非常相似,svn但我不想使用它们,因为我主要处理二进制文件以及创建和应用补丁的简单要求。