问题标签 [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 回答
80 浏览

git - 使用 Git 构建补丁的方法

我是 Git 新手,我必须为我的帐户设置构建过程

对于完整的构建,我可以做git clone

但是对于“补丁构建”,我需要“拉”最后一个已知的好代码+为该补丁更改的代码

例子

使用 Git 部署构建和部署“补丁”的最佳构建方法是什么?

建议和链接将非常有用。

0 投票
1 回答
492 浏览

git - diff 和 git diff 创建的补丁/文件有什么区别?

diff我想知道由和创建的文件/补丁的格式有什么区别git-diff
我知道diff有 3 个(“普通”,“紧凑”-c一个和“统一”-u一个)。

但是,可能存在一些差异,并且在某些情况下您无法自由交换git diffdiff。所以:

  1. 这取决于您是否可以使用git diffdiff对于同一个文件?
  2. 格式之间有什么区别?
  3. 如果您无法交换命令(请参阅 1.),您如何将文件转换为其他格式,以便您可以将它们与其他命令一起使用?
  4. 如果您可以交换命令(请参阅 1.):甚至建议这样做吗?
  5. 这两个命令创建的文件是否还有其他显着差异?
0 投票
0 回答
213 浏览

git - 通过合并应用补丁

假设我已经从应用 A 中的 6 个提交创建了一个补丁,并且我想在应用 B 中应用这个补丁。

如果我尝试应用补丁,git 会抱怨,因为命名不同或文件还不存在。

是否可以应用补丁和

  1. 通过应用补丁创建文件?还是只能更新现有文件?
  2. 是否有可能在最终应用补丁之前合并,因为命名不同,或者您想添加更多代码?

我要解决的问题是将一些代码从应用程序 B 复制到应用程序 A。我无法合并,因为我只希望在 A 中构建一个功能(几个提交)。这可以使用 git 吗?

0 投票
3 回答
2612 浏览

git - Git one-liner 用于交互式应用补丁

我有这个补丁文件,它包含一堆我想应用于 git 分支的修改。但我不想对所有这些修改做出一个独特的提交,而是想将它分成 2 或 3 个提交

我知道我可以通过首先应用补丁来实现这一点,然后进行交互式添加(逐块),如下所示:

我只是想知道是否可以在一个 git 命令中做到这一点。我git applygit add.

编辑

我认为这个问题不应被视为具有多个命令的 Git 别名语法的副本,因为该问题(及其答案)不需要不涉及传递给别名的参数。

0 投票
1 回答
3397 浏览

git - 如何修复您刚刚应用的补丁中的一个或多个帅哥被拒绝错误?

在 git 中应用补丁时,如果我在工作副本中修改了补丁中存在的相同文件,则会收到以下错误。

在您刚刚应用的补丁中,一个或多个大块被拒绝,您会在与受影响文件同名的“.rej”文件中找到大块。受影响的文件是:D D..

如何解决这个问题?

0 投票
0 回答
435 浏览

git - 一个根本不适用的手动 git checkout 补丁

我是 Git 的新手,但我一直在学习一些更高级的东西,因为我一直在参与游戏设计比赛。在尝试在两个分支之间拼接更改的过程中,我被介绍到git checkout --patch,这正是我需要的。然而,尽管简单地使用yor应用大块n会起作用,分裂也一样,但每当我选择手动编辑大块时e,它总是失败。以这个补丁为例:

这是一个简单的补丁,我可以通过拆分来解决它的问题,但我将使用它作为示例。假设我尝试保留m_softStunbool 和verticalInputfloat 变量。看起来我需要做的就是:

我所做的就是删除-前面的,bool m_softStun并且正如文档和其他答案告诉我的那样,添加一个空格。

但是,当我尝试应用此补丁时,它返回给我一个错误:

此错误或具有不同行号的变体已通过以下所有尝试修复它返回给我:

  • 我使用过标准的 Windows 10 Notepad、Notepad++ 甚至 Vim
  • 我已经检查以确保选项卡在开始时没有使用空格,甚至进入 Vim 的十六进制分析以确保它
  • 我尝试从行尾删除并保留回车符
  • 我尝试通过 Vim、Notepad 和 Notepad++ 以 ANSI 和 UTF-8 进行编码
  • 我试过根本编辑补丁,这仍然给我一个错误,让我怀疑它要么是 git 中的错误,要么是我保存文件的方式。

我几乎无计可施,试图找出问题所在,但我没有足够的技术知识来开始找出问题所在。甚至我当地的“git 人”,他提出了诸如十六进制检查之类的建议,也无法提供帮助,并给我发送了一份迄今为止没有任何结果的错误报告。有谁知道为什么我不能制作手动补丁?

0 投票
2 回答
23 浏览

git - 以交互方式从 git 存储库创建补丁

我有一个存储库,我有一个提交,我想将其作为一个补丁发布到一个开源项目。问题是该提交的某些部分具有我需要并希望为自己保留的调试信息,但对这个公共存储库来说是混乱的。

我正在寻找的是通过与 类似的机制从我的存储库中生成一个补丁文件,git add -up我可以在其中选择将要提交的差异的哪些部分。有什么办法可以生成我可以发送的补丁吗?

0 投票
0 回答
1108 浏览

git - 运行“git add -e”后收到“补丁失败”和“补丁不适用”错误

我似乎无法在 Powershell 或 Git Bash 中运行“git add -e”而不会出错。以下是有问题的文件(test3.html)内容:

注意最后一行有回车。

现在,我运行以下命令并从本地 git 存储库接收相应的输出:

这是在记事本中输入“git add -e”命令后出现的内容:

最后一行后面有回车。该文件最初是用 UTF-8 编码的 notepad++ 编写的。

一旦我关闭记事本,我就会收到以下错误:

错误:补丁失败:test3.html:1

错误:test3.html:补丁不适用

问题:为什么我会收到这些错误,尤其是如果我没有使用 ADD_EDIT.patch 更改任何内容?

我已经尝试过更复杂的流程,我会将更改拆分为单独的块并决定我想要提交哪些更改。也会出现类似的结果。而且,如果我连最简单的流程都无法工作,那还有什么意义……

我这样做的原因是因为我是新手,所以要更加熟悉 Git。我一直在阅读https://git-scm.com/docs/git-add并一直在尝试遵循每个选项。

非常感谢我可能错过的任何帮助、建议或对其他帖子的引用。

编辑:

这是我的配置的样子:

0 投票
1 回答
372 浏览

magit - 如何反向应用补丁?

如果可能的话,如何使用 Magit 反向应用补丁?

0 投票
3 回答
1572 浏览

git - Reapply Git commits from copied fork repository to original repository

A university colleague of mine thought it was a good idea to fork a repository by cloning it and copy its contents into a new, freshly initialized repository but without the .git folder from the original repository. Afterwards, he simply committed this copy using a single commit and the whole team began working on the project based on this commit:

Now, my first goal is to get the following repository structure:

What I have been trying to do now during the past few hours is the following:

    • Clone the original repository.
    • git diff > /path/to/patch from within the fork.
    • git apply within the original repository.
    • Works, but does not preserve the commits.
  1. Various other things that will not work.
    • Clone the original repository.
    • Create and switch to a new branch.
    • Reset it to the commit A using git reset --hard COMMIT_HASH_A.
    • Create a patch from N <- O <- P using git format-patch COMMIT_HASH_M --stdout > /path/to/patch on the fork.
    • Apply this patch on the original repository using git am -3 /path/to/patch. After resolving several conflicts such as the duplicate creation of empty files, this will result in the following error: fatal: sha1 information is lacking or useless (some_file_name). Repository lacks necessary blobs to fall back on 3-way merge. This is where I cannot get on.

So how do I create a repository including all commits from the original repository and from our team as described, so that eventually, a pull request could be sent to the original repository? Might a git-rebase help?