有一个主Git仓库“MainRepo”
这里是新的存储库“NewRepo”
Newrepo使用“MainRepo”文件夹的确切文件/文件夹内容/结构,除了git文件夹。
因此,基本上,将内容复制到一个新文件夹,“git it”并将其推送到一个新的远程存储库。
现在它失去了与“NewRepo”的连接。
然而,我想继续在NewRepo上工作,但也要与OldRepo保持同步。
时不时地,OldRepo中的一些文件会发生变化,我想将这些小变化反映到NewRepo中。
我的想法是向NewRepo添加一个新的remote,目标是OldRepo url或OldRepo的本地存储库文件夹路径。
希望合并然后轰!
所有文件都显示为“冲突,”而不仅仅是已更改的3个文件。
这种合并甚至是可能的吗?我会想象这被命名为“交叉回购合并”。
或者这个动作是不是进入了同步文件夹的领域?而不是git合并。
帮帮我,我太爱git了,有时我的爱增加了我的期望太多,最终在这条路上无处可去。
3条答案
按热度按时间q5iwbnjs1#
问题 是 OldRepo 有 NewRepo 没有 共享 的 历史 记录 , 因此 即使 它们 有 相同 的 文件 内容 , 它们 也 被 视为 完全 不同 的 Repo 。 如果 通过 克隆 OldRepo 来 创建 NewRepo , 这 应该 可以 解决 。
听 起来 这 就是 你 想要 的 。
6uxekuva2#
我有类似的情况,我使用
rsync
:我很好使用任何可以工作的工具,但是 all-
git
解决方案对我来说似乎有点大材小用--或者我只是对rsync
比git
更 * 舒服 *。更新“MainRepo”以匹配“NewRepo”的所需组件:
使用
rsync
:rsync [选项]源目标:
rsync
使用这种方式,使Destination文件夹与Source文件夹同步。以下示例显示了重要的详细信息:NewRepo
和MainRepo
表示为文件夹规格;例如/home/$USER/somefoldername
或./somefoldername
,具体取决于您的pwd
。options
由字符串ptgovidcC
和其他指令rsync
组成请特别注意
ptgovidcC
中的i
选项和--dry-run
选项。这些选项一起使用,可以让您“练习运行”,以确保您的rsync
命令选项执行您需要的操作。--exclude=
选项可以根据需要重复多次,以防止不需要的文件/文件夹进入MainRepo
在上述命令中,
NewRepo
是源,MainRepo
是目标当然,您应该***始终***咨询
man rsync
,以确保您的命令适合您的目标。更新“NewRepo”以匹配“MainRepo”:
这基本上与上面的演练相同,但现在
MainRepo
是源,NewRepo
是目标options
显然也需要改变,但i
和--dry-run
选项将再次成为您的 “试验场”。解释
i
输出:这并不像第一次看到它时看起来那么难,但这个“Map”将允许您解释
rsync
已采取的操作-或***要采取的***(当使用--dry-run
时):此模式基于
man rsync
中-i, --itemize-changes
选项得内容,其组织方式便于引用ex 1 e0f1x.rmbxnbpk3#
在windows上,你可以使用robocopy将未跟踪文件夹中的更改“同步”到git分支文件夹中。
robocopy <Source Folder> <Destination Git Folder> /MIR /MT:8 /R:1 /W:1 /XD ".git" /XF ".gitignore" /l
如果您对在目标中复制和删除正确的文件感到满意,请删除
/l
参数。(/l
列出操作,但不执行这些操作。)然后使用git命令或git gui暂存并提交所需的更改。
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy