Git 在一次提交中将一个存储库中的主存储库合并到另一个存储库的主存储库

Git 在一次提交中将一个存储库中的主存储库合并到另一个存储库的主存储库,git,Git,使用git实现这一点的最佳方法是什么 我正在创建一个私有存储库,希望能够定期合并来自另一个公共存储库的更改。但是,为了保持我的私有存储库提交历史记录的干净,我不想从公共repo引入所有提交,而是能够在一次提交中解决任何和所有更改 我正在尝试做的示例: 我在服务器上初始化存储库,myrepo.git git init--bare 我在本地克隆了这个 git克隆user@server:myrepo.git 并继续在主分支上进行初始提交 然后修改git配置,将公共存储库中的 [remote "orig

使用git实现这一点的最佳方法是什么

我正在创建一个私有存储库,希望能够定期合并来自另一个公共存储库的更改。但是,为了保持我的私有存储库提交历史记录的干净,我不想从公共repo引入所有提交,而是能够在一次提交中解决任何和所有更改

我正在尝试做的示例:

我在服务器上初始化存储库,
myrepo.git

git init--bare

我在本地克隆了这个

git克隆user@server:myrepo.git

并继续在
分支上进行初始提交

然后修改git配置,将公共存储库中的

[remote "origin"]
        url = user@server:myrepo.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[remote "public"]
        url = http://github.com/path/to/publicrepo.git
        fetch = +refs/heads/*:refs/remotes/origin/*
做一个
git merge-X recursive-s ours public/master对我来说是有意义的,因为我正试图完成这项工作,但我得到以下几点:

(master) $ git merge -X recursive -s ours public/master
merge: public/master - not something we can merge
但是,如果我执行
git pull public master
,它将继续从
public
repo将每个提交拉入
myrepo
上的
master
,以以下内容结束:

commit 421b15b37efacb84be80b95c8534087e67835017
Merge: be1a905 831a27d
Author: Me
Date:   Sun Feb 23 23:04:29 2014 -0500

Merge branch 'master' of http://github.com/path/to/publicrepo into master
这一公开回购协议有很多承诺,要将它们扼杀是不可行的

如果可能的话,我想看到一个提交的
合并分支“master”的http://github.com/path/to/publicrepo 每次我在
myrepo
中解决与
public
的合并冲突时,都会在
myrepo
上的
master
的提交历史记录中进入master

有没有可能这样做,或者有没有更简单的方法

我正在创建一个私有存储库,希望能够定期合并来自另一个公共存储库的更改

这很好,但它从根本上与此不兼容:

但是,为了保持我的私有存储库提交历史记录的干净,我不想从公共repo引入所有提交,而是能够在一次提交中解决任何和所有更改

您不能有一个单一的提交来引入来自第二个repo的所有更改,并且仍然能够定期合并更改。Git需要匹配提交ID才能知道什么是合并的,什么不是,在一个大的合并提交中这样做可以保证您与公共repo没有共同的提交ID

合并要求Git能够倒带到两个分支分叉的地方。如果您的分支从未从单亲分支中派生,则不会发生这种情况,这听起来像是您正在尝试设置的。只要接受你将不得不包括来自公共回购的全部承诺历史。我甚至不知道为什么你会认为这是不受欢迎的,这就是Git是如何工作的。

您可以通过简单的补丁在git外部执行此操作,但我真的不知道您为什么要这样做。您将很容易看到哪些提交是由您编写的,哪些不是,如果您希望为公共回购做出任何贡献,您需要有一个共享的历史记录

我正在创建一个私有存储库,希望能够定期合并来自另一个公共存储库的更改

这很好,但它从根本上与此不兼容:

但是,为了保持我的私有存储库提交历史记录的干净,我不想从公共repo引入所有提交,而是能够在一次提交中解决任何和所有更改

您不能有一个单一的提交来引入来自第二个repo的所有更改,并且仍然能够定期合并更改。Git需要匹配提交ID才能知道什么是合并的,什么不是,在一个大的合并提交中这样做可以保证您与公共repo没有共同的提交ID

合并要求Git能够倒带到两个分支分叉的地方。如果您的分支从未从单亲分支中派生,则不会发生这种情况,这听起来像是您正在尝试设置的。只要接受你将不得不包括来自公共回购的全部承诺历史。我甚至不知道为什么你会认为这是不受欢迎的,这就是Git是如何工作的。

您可以通过简单的补丁在git外部执行此操作,但我真的不知道您为什么要这样做。您将很容易看到哪些提交是由您编写的,哪些不是,如果您希望为公共回购做出任何贡献,您需要有一个共享的历史记录

我正在创建一个私有存储库,希望能够定期合并来自另一个公共存储库的更改

这很好,但它从根本上与此不兼容:

但是,为了保持我的私有存储库提交历史记录的干净,我不想从公共repo引入所有提交,而是能够在一次提交中解决任何和所有更改

您不能有一个单一的提交来引入来自第二个repo的所有更改,并且仍然能够定期合并更改。Git需要匹配提交ID才能知道什么是合并的,什么不是,在一个大的合并提交中这样做可以保证您与公共repo没有共同的提交ID

合并要求Git能够倒带到两个分支分叉的地方。如果您的分支从未从单亲分支中派生,则不会发生这种情况,这听起来像是您正在尝试设置的。只要接受你将不得不包括来自公共回购的全部承诺历史。我甚至不知道为什么你会认为这是不受欢迎的,这就是Git是如何工作的。

您可以通过简单的补丁在git外部执行此操作,但我真的不知道您为什么要这样做。您将很容易地看到哪些提交是由您编写的,哪些不是,以及您是否希望向