Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 使用快照作为上游_Git - Fatal编程技术网

Git 使用快照作为上游

Git 使用快照作为上游,git,Git,我的团队一直在开发一个git存储库。让我们称之为mainrepo。现在我只需要外部人员完成一些事情,所以我复制了存储库中的文件,并创建了一个新的文件(我们称之为snapshotrepo) 现在,这两个存储库都包含一些更改,我希望git理解快照存储库的起点是mainrepo的特定提交,然后合并来自这两个repo的更改。或者从快照中选择一个新快照,然后不时推送一个新快照到那里 你会怎么做?还是复印已经是一个错误 还是复印已经是一个错误 对。您应该已经完成了一个浅层克隆(历史记录为1次提交。但是,在执

我的团队一直在开发一个git存储库。让我们称之为
main
repo。现在我只需要外部人员完成一些事情,所以我复制了存储库中的文件,并创建了一个新的文件(我们称之为
snapshot
repo)

现在,这两个存储库都包含一些更改,我希望git理解
快照
存储库的起点是
main
repo的特定提交,然后合并来自这两个repo的更改。或者从
快照
中选择一个新快照,然后不时推送一个新快照到那里

你会怎么做?还是复印已经是一个错误

还是复印已经是一个错误

对。您应该已经完成了一个浅层克隆(历史记录为1次提交。但是,在执行快照的提交时也要这样做!)这样,您就能够共享提交,因为2存储库至少有一个相同的提交

您仍然可以尝试使用“git-rebase--on”来做一些事情,如果历史记录中的“externals”没有,则不包含合并

或者更难一点,但更好的长时间解决方案,在存储库中执行浅层克隆,从现有存储库中获取它,并执行“git替换”,以使用新的提交更改根提交

还是复印已经是一个错误

对。您应该已经完成了一个浅层克隆(历史记录为1次提交。但是,在执行快照的提交时也要这样做!)这样,您就能够共享提交,因为2存储库至少有一个相同的提交

您仍然可以尝试使用“git-rebase--on”来做一些事情,如果历史记录中的“externals”没有,则不包含合并


或者更难一点,但更好的长时间解决方案,在存储库中执行浅层克隆,从现有存储库中获取它,并执行“git替换”,以使用新的提交更改根提交

在git工具箱中,有一个隐藏的命令可以帮助您解决问题:

下面是一篇解释如何使用它的帖子:

这里有一种使用方法:

# start with a clone of your main repo :
git clone myrepo grafting
cd grafting

# add a copy of the 'external' repo as a remote :
git remote add external /path/to/external
git fetch external

# your main repo will be referenced as 'origin', the external repo as 'external'

# * you will need the hash of the original commit from which you created the
#   inital 'external' commit : I will call this commit <base>

# * you need the hash of the first commit on external :
#   I will call this commit <external>
git log --oneline external/master | tail -1

# "replace" the initial commit on external with the commit of your main repo :
git replace <external> <base>
#从主回购协议的克隆开始:
git克隆myrepo嫁接
镉嫁接
#将“外部”回购协议的副本添加为远程:
git远程添加外部/path/to/external
git获取外部
#您的主要回购将被引用为“来源”,外部回购将被引用为“外部”
#*您需要原始提交的哈希值,从中创建
#初始“外部”提交:我将此称为提交
#*您需要外部服务器上第一次提交的哈希值:
#我称之为承诺
git日志--单线外部/主|尾-1
#用主回购的提交“替换”外部的初始提交:
git替换
您现在应该能够使用git的大多数命令,就好像
外部
是移植到
内部一样



我的建议是:从这个
目录中,构建一个干净的新回购协议,然后将其作为您和外部团队的参考。

在git工具箱中,有一个隐藏的命令可以帮助您解决问题:

下面是一篇解释如何使用它的帖子:

这里有一种使用方法:

# start with a clone of your main repo :
git clone myrepo grafting
cd grafting

# add a copy of the 'external' repo as a remote :
git remote add external /path/to/external
git fetch external

# your main repo will be referenced as 'origin', the external repo as 'external'

# * you will need the hash of the original commit from which you created the
#   inital 'external' commit : I will call this commit <base>

# * you need the hash of the first commit on external :
#   I will call this commit <external>
git log --oneline external/master | tail -1

# "replace" the initial commit on external with the commit of your main repo :
git replace <external> <base>
#从主回购协议的克隆开始:
git克隆myrepo嫁接
镉嫁接
#将“外部”回购协议的副本添加为远程:
git远程添加外部/path/to/external
git获取外部
#您的主要回购将被引用为“来源”,外部回购将被引用为“外部”
#*您需要原始提交的哈希值,从中创建
#初始“外部”提交:我将此称为提交
#*您需要外部服务器上第一次提交的哈希值:
#我称之为承诺
git日志--单线外部/主|尾-1
#用主回购的提交“替换”外部的初始提交:
git替换
您现在应该能够使用git的大多数命令,就好像
外部
是移植到
内部一样



我的建议是:从这个
目录中,构建一个全新的回购协议,然后将其作为您和外部团队的参考。

尝试在回购协议之间同步,就好像它们是同一回购协议中的分支一样,这对我来说就像是一个黑客。使用单个存储库有什么问题吗?主要是我不喜欢公开一个爱好项目的git历史。你能创建一个新的分支,然后压缩一些提交吗?在我看来,挑选樱桃应该谨慎使用,特别是如果你计划在某个时候合并完整的来源分支机构。尝试在回购协议之间进行同步,就好像它们是同一回购协议中的分支机构一样,这让我觉得是一种恶作剧。使用单个存储库有什么问题吗?主要是我不喜欢公开一个爱好项目的git历史。你能创建一个新的分支,然后压缩一些提交吗?在我看来,应该谨慎使用Cherry picking,特别是如果您计划在某个时候合并完整的源分支。