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

git - 如何在 Git 中选择性地合并或选择来自另一个分支的更改?

我在一个新项目上使用 Git,该项目有两个并行的——但目前是实验性的——开发分支:

  • master: 现有代码库的导入以及我通常确定的一些修改
  • exp1: 实验分支#1
  • exp2: 实验分支#2

exp1exp2代表两种截然不同的架构方法。在我走得更远之前,我无法知道哪个(如果有的话)会起作用。当我在一个分支中取得进展时,我有时会进行一些对另一个分支有用的编辑,并且只想合并那些。

将选择性更改从一个开发分支合并到另一个分支的最佳方法是什么?

我考虑过的方法:

  1. git merge --no-commit然后手动取消暂存大量我不想在分支之间通用的编辑。

  2. 手动将公共文件复制到临时目录中,然后git checkout移动到另一个分支,然后将更多手动文件从临时目录中复制到工作树中。

  3. 上面的一个变种。暂时放弃exp分支并使用两个额外的本地存储库进行实验。这使得手动复制文件更加简单。

所有这三种方法似乎都很乏味且容易出错。我希望有更好的方法;类似于过滤器路径参数的东西,它会使git-merge选择性更强。

0 投票
2 回答
3623 浏览

git - 为什么 git 会留下修改过的文件?如何调整我的工作流程以做得更好?

这将是一个长的,但我希望你能忍受我。

我正在尝试使用 git 将我团队的源代码置于版本控制之下。在尝试找到适合我的不同方法后,我最终决定使用git format-patch功能。FWIW,该产品是在 Windows 中运行的 ASP.NET Web 应用程序,我目前正在使用msysgit

背景:
我有一个包含所有 aspx 文件的登台服务器(镜像生产服务器)。然后我在我的根文件夹中使用init-db创建了一个 git repo并git add .跟踪所有文件。

为了让我在我的笔记本电脑上有一个本地副本,我实际上从登台服务器上压缩了“.git”文件夹并将其通过 FTP 传输到我的本地计算机。将其重命名为“staging.git”并git clone staging.git webappfolder针对我的开发做了一个。

在为 feature1 和 feature2 做了 2 次提交之后,是时候将更改应用回登台服务器了。我做了一个git format-patch -2输出到文件0001blah.patch0002blah.patch.

然后将这两个补丁文件发送到登台服务器,我git am 0001blah.patch在登台服务器本身上做了一个。做一个git log展示提交经过。但是当我做一个git status,它显示Changed but not updated: modified: file1.aspx

这到底是什么意思?我也尝试过做 agit apply 0001blah.patch但我得到的只是一个error" patch failed: file1.aspx: patch does not apply.

我的工作流程有问题吗?有关正确方法或帮助的任何见解都将非常有帮助。同样,修补模型现在对我们来说是最可行的,因为我们不会很快设置 SSH 服务器。

0 投票
7 回答
55532 浏览

git - 如何将 git 补丁从一个存储库应用到另一个存储库?

我有两个存储库,一个是库的主存储库,另一个是使用该库的项目。

如果我对从属项目中的 进行修复,我想要一种简单的方法将该补丁应用回上游。

该文件的位置在每个存储库中都不同。

  • 主要回购:www.playdar.org/static/playdar.js
  • 项目:playlick.com/lib/playdar.js

我尝试git format-patch -- lib/playdar.js在 playlick 项目上使用,然后git am在主 playdar repo 上使用,但补丁文件中的不同文件位置引发了错误。

有没有一种简单的方法可以将补丁从给定文件上的给定提交应用到其他地方的另一个任意文件?

对于奖励积分,如果您要应用补丁的文件不在 git 存储库中怎么办?

0 投票
5 回答
56488 浏览

git - 如何用我藏起来的东西格式化补丁

在 git 中,我隐藏了我的更改。我可以用我藏起来的东西创建一个补丁吗?然后将该补丁应用到其他存储库(我的同事的)?

我知道git format-patch -1,但我认为这是为了我所承诺的。但我正在为我隐藏的变化寻找同样的东西。

以及如何在其他存储库中应用补丁?

0 投票
1 回答
1013 浏览

git - 如何使用 git 签署补丁

我正在做一个项目,有些人会向我发送 git 补丁,我必须验证这些补丁并签署提交。

我们正在使用创建补丁

文件会邮寄给​​我们,然后我们必须验证补丁。为此,我们创建一个新分支,然后使用

然后验证提交的内容,如果正确,那么我们需要为补丁中的每个提交添加签名。

我见过 git -am 命令,我们可以在应用补丁时添加签核。

应用补丁后是否可以添加提交?

谢谢

0 投票
7 回答
643281 浏览

git - 从当前工作目录中未提交的更改创建一个 git 补丁

假设我的工作目录中有未提交的更改。我怎样才能在不创建提交的情况下从这些补丁中制作补丁?

0 投票
2 回答
1007 浏览

git - GIT 补丁 - 还是 - 推送?

我们正在考虑在一个新项目中使用 git 的两种方法:

  1. 开发人员将补丁发送给维护人员(最终可能会成为开发人员之一),他将这些补丁用于测试和集成

  2. 开发者将他们的提交推送到公共的“开发者”分支(项目的每个子模块的分支),维护者收到关于推送的邮件通知,并且可以审查\测试\集成。

最终结果是相同的——基于最新的分支,其中包含开发人员提交。

所以-我的问题是,哪个更好?我应该由一小群人在非开源项目开发人员中使用吗?(对我来说,通过邮件向坐在我旁边的那个人发送补丁听起来很奇怪)

0 投票
1 回答
254 浏览

git - 无法推送或拉取时的 Git 工作流程

这对我来说是一个反复出现的问题,但我想重申一下。

快速解释一下我的情况:我所处的环境没有 git 服务器,也没有共享分区或编码器之间的任何共同点。没有,不会有,不能有。时期。

我正在尝试提出一个工作流解决方案,即使在我们管理的那种环境中,我们的代表也能保持合理的同步。

我目前正在尝试的解决方案使用一个讨论组来分发补丁,两个主要分支和一个看似短的工作流程,如下所示:

  • 分支是marsteryours
  • master是同步分支,它将让您保持最新状态并跟踪其他开发人员仍然没有您的代码。
  • yours将成为您的新主人,并且是您的最终代码应该在的地方。你不在master.
  • 每个人都将补丁发送到讨论列表。
  • 我正在考虑很少有两个人会在同一个文件中工作。

工作流程中有两个主要操作:

生成补丁:

  1. 必须yours
  2. master从( git format-patch master)生成补丁
  3. master
  4. 并入yours_master
  5. >转到yours,继续使用yours

应用补丁:

  1. master分行
  2. 应用收到的补丁
  3. yours分行
  4. 并入master_yours
  5. >继续合作yours

如果我做对了,这应该使master分支与其他人保持合理同步。

并不是说yours分支只是为了帮助跟踪其他人拥有或没有的东西。

我试图弄清楚一些问题是否会太麻烦:

  • 应用补丁的顺序?
  • 如何避免和检测有人错过补丁?
  • 当有人错过补丁时会有多大问题?
  • 这可能会产生我什至没有想到的其他问题?

谢谢!

0 投票
1 回答
122 浏览

git - 用 git 劫持你的工作?

情况是这样的...

我需要能够将 git 存储库分支重新定位到某个时间点,然后在该时间点之后删除(并存储或保留)我的提交。保留重新应用所有东西的能力......但不让它们生活在远程存储库中......

原因(也许你会有更好的解决方案)

有一份我已经工作了几个月的合同工作,他们拒绝支付......我希望能够将回购退回到我参与的开始,删除(并存储)我的工作重新申请付款..

复杂的问题是,有其他用户同时提交,我不想删除它们,但如果我拉断间歇性提交并尝试在同一点运行 repo(不倒带活动副本),它显然会中断)。

想法?(技术)...想过使用 git 补丁吗?

0 投票
2 回答
747 浏览

git - 不同存储库之间的 git 合并

我用 git-svn 从一个大的 svn 存储库(git svn clone)创建了一个存储库。我的 git 存储库中有几个本地提交,我不需要推送到 svn,但我需要从中获取更新。

现在我意识到我不需要本地存储库中的整个 svn 历史记录,因为它使用了太多空间(一些 Gb),我应该在 clone 命令中使用 -r 选项来选择一个起点。

我会从一个新的存储库重新开始,然后合并旧存储库中的所有本地提交,但我不确定是否有一种简单的方法可以做到这一点。

情况是这样的:

旧存储库的日志:

  • 本地提交 10
  • 本地提交 9 ...
  • 本地提交 1
  • svn 修订版 X
  • svn 修订版 X-1 ...
  • svn 修订版 1

新存储库只有一个提交,对应于 svn 存储库的修订 X 的竞争。

我尝试使用格式补丁并应用命令,但我不确定如何执行此操作。

有没有办法做我需要的?

谢谢你的帮助