问题标签 [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.
git - 使用 Git 构建补丁的方法
我是 Git 新手,我必须为我的帐户设置构建过程
对于完整的构建,我可以做git clone
但是对于“补丁构建”,我需要“拉”最后一个已知的好代码+为该补丁更改的代码
例子
使用 Git 部署构建和部署“补丁”的最佳构建方法是什么?
建议和链接将非常有用。
git - diff 和 git diff 创建的补丁/文件有什么区别?
diff
我想知道由和创建的文件/补丁的格式有什么区别git-diff
。
我知道diff
有 3 个(“普通”,“紧凑”-c
一个和“统一”-u
一个)。
但是,可能存在一些差异,并且在某些情况下您无法自由交换git diff
和diff
。所以:
- 这取决于您是否可以使用
git diff
和diff
对于同一个文件? - 格式之间有什么区别?
- 如果您无法交换命令(请参阅 1.),您如何将文件转换为其他格式,以便您可以将它们与其他命令一起使用?
- 如果您可以交换命令(请参阅 1.):甚至建议这样做吗?
- 这两个命令创建的文件是否还有其他显着差异?
git - 通过合并应用补丁
假设我已经从应用 A 中的 6 个提交创建了一个补丁,并且我想在应用 B 中应用这个补丁。
如果我尝试应用补丁,git 会抱怨,因为命名不同或文件还不存在。
是否可以应用补丁和
- 通过应用补丁创建文件?还是只能更新现有文件?
- 是否有可能在最终应用补丁之前合并,因为命名不同,或者您想添加更多代码?
我要解决的问题是将一些代码从应用程序 B 复制到应用程序 A。我无法合并,因为我只希望在 A 中构建一个功能(几个提交)。这可以使用 git 吗?
git - Git one-liner 用于交互式应用补丁
我有这个补丁文件,它包含一堆我想应用于 git 分支的修改。但我不想对所有这些修改做出一个独特的提交,而是想将它分成 2 或 3 个提交。
我知道我可以通过首先应用补丁来实现这一点,然后进行交互式添加(逐块),如下所示:
我只是想知道是否可以在一个 git 命令中做到这一点。我git apply
在git add
.
编辑
我认为这个问题不应被视为具有多个命令的 Git 别名语法的副本,因为该问题(及其答案)不需要不涉及传递给别名的参数。
git - 如何修复您刚刚应用的补丁中的一个或多个帅哥被拒绝错误?
在 git 中应用补丁时,如果我在工作副本中修改了补丁中存在的相同文件,则会收到以下错误。
在您刚刚应用的补丁中,一个或多个大块被拒绝,您会在与受影响文件同名的“.rej”文件中找到大块。受影响的文件是:D D..
如何解决这个问题?
git - 一个根本不适用的手动 git checkout 补丁
我是 Git 的新手,但我一直在学习一些更高级的东西,因为我一直在参与游戏设计比赛。在尝试在两个分支之间拼接更改的过程中,我被介绍到git checkout --patch
,这正是我需要的。然而,尽管简单地使用y
or应用大块n
会起作用,分裂也一样,但每当我选择手动编辑大块时e
,它总是失败。以这个补丁为例:
这是一个简单的补丁,我可以通过拆分来解决它的问题,但我将使用它作为示例。假设我尝试保留m_softStun
bool 和verticalInput
float 变量。看起来我需要做的就是:
我所做的就是删除-
前面的,bool m_softStun
并且正如文档和其他答案告诉我的那样,添加一个空格。
但是,当我尝试应用此补丁时,它返回给我一个错误:
此错误或具有不同行号的变体已通过以下所有尝试修复它返回给我:
- 我使用过标准的 Windows 10 Notepad、Notepad++ 甚至 Vim
- 我已经检查以确保选项卡在开始时没有使用空格,甚至进入 Vim 的十六进制分析以确保它
- 我尝试从行尾删除并保留回车符
- 我尝试通过 Vim、Notepad 和 Notepad++ 以 ANSI 和 UTF-8 进行编码
- 我试过根本不编辑补丁,这仍然给我一个错误,让我怀疑它要么是 git 中的错误,要么是我保存文件的方式。
我几乎无计可施,试图找出问题所在,但我没有足够的技术知识来开始找出问题所在。甚至我当地的“git 人”,他提出了诸如十六进制检查之类的建议,也无法提供帮助,并给我发送了一份迄今为止没有任何结果的错误报告。有谁知道为什么我不能制作手动补丁?
git - 以交互方式从 git 存储库创建补丁
我有一个存储库,我有一个提交,我想将其作为一个补丁发布到一个开源项目。问题是该提交的某些部分具有我需要并希望为自己保留的调试信息,但对这个公共存储库来说是混乱的。
我正在寻找的是通过与 类似的机制从我的存储库中生成一个补丁文件,git add -up
我可以在其中选择将要提交的差异的哪些部分。有什么办法可以生成我可以发送的补丁吗?
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并一直在尝试遵循每个选项。
非常感谢我可能错过的任何帮助、建议或对其他帖子的引用。
编辑:
这是我的配置的样子:
magit - 如何反向应用补丁?
如果可能的话,如何使用 Magit 反向应用补丁?
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.
- Various other things that will not work.
- Clone the original repository.
- Create and switch to a new branch.
- Reset it to the commit
A
usinggit reset --hard COMMIT_HASH_A
. - Create a patch from
N <- O <- P
usinggit 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?