相关疑难解决方法(0)

为特定提交生成git补丁

我需要编写一个脚本,为SHA1提交号列表创建补丁.

我尝试过使用git format-patch <the SHA1>,但是从那个SHA1开始为每个提交生成一个补丁.在生成几百个补丁之后,我不得不杀死这个过程.

有没有办法只为特定的SHA1生成补丁?

git patch

1144
推荐指数
10
解决办法
57万
查看次数

如何将Git补丁应用于具有不同名称和路径的文件?

我有两个存储库.在其中一个,我对文件进行了更改./hello.test.我提交更改并使用该提交创建补丁git format-patch -1 HEAD.现在,我有一个第二个存储库,其中包含一个与hello.test具有相同内容的文件,但是以不同的名称放在另一个目录中:./blue/red/hi.test.如何将上述补丁应用于hi.test文件?我试过,git am --directory='blue/red' < patch_file但当然抱怨文件名称不一样(我认为Git并不关心?).我知道我可以编辑差异以应用于该特定文件,但我正在寻找一个命令解决方案.

git filenames patch git-patch git-am

84
推荐指数
4
解决办法
3万
查看次数

Git错误:以前的rebase目录.git/rebase-apply仍然存在,但是给出了mbox

我正在尝试应用补丁,我从http://www.winehq.org/pipermail/wine-devel/2014-May/104356.html获取.我把它复制到一个文本编辑器中,并保存为my.patch(我需要修复电子邮件,它已被混淆).

我试着用Git应用它,但是我收到了这个错误:

sashoalm@sashoalm-VirtualBox:~/Desktop/wine-git$ git am --signoff <my.patch
previous rebase directory /home/sashoalm/Desktop/wine-git/.git/rebase-apply still exists but mbox given.
Run Code Online (Sandbox Code Playgroud)

这个神秘的错误消息让我不知道出了什么问题或我需要做些什么来使它工作.这个错误是什么意思?我该如何解决?

git patch

58
推荐指数
2
解决办法
4万
查看次数

如何在一组Git补丁中修改文件路径?

我正在开发一个Git仓库,它是从SVN仓库中撤出的git svn.许多月前,SVN repo是从原始(上游)项目的源tarball创建的.原始项目具有如下文件结构:

/
  COPYING
  README
  src/
      ...many source files...
Run Code Online (Sandbox Code Playgroud)

然而,当创建SVN repo时,README文件等被剥离,并且应用程序是以src/root身份创建的,因此repo现在看起来像:

/
  ...many source files
Run Code Online (Sandbox Code Playgroud)

我最近将这个SVN repo转换为Git仓库.原始项目也在Git仓库中,我想开始跟踪上游更改,以便我可以轻松查看已进行的自定义更改(并将修补程序提交回原始项目,如果适用).我在上游回购中找到了我们的SVN repo创建的提交,所以现在我想将我们的更改应用于该提交(在分支中).我可以轻松地创建一组补丁git format-patch并将其应用于克隆的上游repo ...除了文件结构不同,因此补丁不再指向正确的文件.有没有办法将补丁应用git format-patchsrc/克隆回购中的目录?(请注意,Git补丁也有必要的信息,如原作者姓名,电子邮件和日期,我也想申请,而不是手工完成,即乱搞GIT_AUTHOR_EMAIL等)

git

14
推荐指数
1
解决办法
4699
查看次数

我如何使用--relative与git format-patch?

当我使用时git diff --relative HEAD^..HEAD,我得到了一个很好的输出,我删除了它所在目录之外的路径.

我开始使用git format-patch,我也想使用,--relative但没有看到任何选项.我怎么会得到同样的效果?

谢谢

git version-control

7
推荐指数
1
解决办法
2580
查看次数

如何仅为更改特定文件的提交生成/应用git补丁

我有两个git repos,它们是彼此的分叉,我需要偶尔将提交从一个提交到另一个.

例如:

git-repo1 有这个目录结构:

repo1/project1/src

repo1/project2/src

while git-repo2具有以下目录结构:

repo2/src/

我想要做的是进行一系列提交并仅为改变特定子目录(例如repo1/project1/src)中的文件的提交生成补丁,并忽略所有仅在其他地方改变文件的提交.

或者,为所有提交生成修补程序,但仅在应用程序修改特定目录中的文件时应用修补程序.

我需要保留有关提交的元数据,因此使用git diff它似乎不是一个可行的选项.

forked git repos之间的目录结构不同.

有没有直接的方法来做到这一点?

UPDATE1

在处理不同的目录结构方面,我看到了这个问题(如何将git补丁从一个存储库应用到另一个存储库?)

但是,如果修补程序谈到修改根本不存在的文件会怎么样?我想忽略这些变化.

git git-diff git-patch

5
推荐指数
1
解决办法
3305
查看次数

Git:如何将文件与先前提交的自身版本合并?

我对提交A中的文件进行了一些更改,然后我错误地解除了更改并继续在提交B和C中进行更改.

我希望提交A中的更改在我的文件中,但B和C中的更改也不应丢失.

假设我的分支现在在C.

我不想

$ git checkout --patch 
Run Code Online (Sandbox Code Playgroud)

因为我希望文件包含我在B和C中所做的更改,并且从提交A中检出文件将在索引和工作树中重写该文件.

我不能做一个挑选,​​因为提交A是一个合并提交(存储库有两个贡献者,我删除了我的导师在我合并之后在后续提交中错误地做出的更改)我可能最终会得到一个如果我指定任何一个父母,那就太乱

除了手动复制文件中我想要的更改外,还有其他方法可以实现吗?

git merge git-cherry-pick

0
推荐指数
1
解决办法
209
查看次数