我用
$ git remote show origin
* remote origin
Fetch URL: git://gitorious.org/bash/bash.git
但没有2011年以来任何新的变化,使我谷歌那里是官方消息来源:http://savannah.gnu.org/git/?group=bash
我决定进行新的起源:
$ git remote rename origin gitorious
$ git remote add origin git://git.savannah.gnu.org/bash.git
和fetch
最新更改,以比较发生的情况(git log master..origin/master
):
$ git fetch origin
warning: no common commits
remote: Counting objects: 23368, done.
remote: Compressing objects: 100% (3449/3449), done.
^Cceiving objects: 8% (1895/23368), 8.51 MiB | 478.00 KiB/s
在看到warning: no common commits
中断后,我徘徊了如何从本地存储库中剥离这些无关的获取的更改(我知道我需要clean clone
)。
我更好,hg
它总是抱怨无关的存储库,除非您-f
。
如果要完全放弃以前的遥控器,则可以将其删除:
git remote remove <remote-name>
但是,这样做只是删除远程条目和远程跟踪分支标签。让我展示一个(非常)简化的示例,其中包含两个具有两个不相关的提交DAG的远程控制器,以及您自己的本地更改。让我们把两个遥控器rmt1
和rmt2
(一个实际上可能是gitorious
现在和其他的origin
,但我想概括了一下):
L <-- master
/
A0 <- A1 <- A2 <-- rmt1/master
B0 <- B1 <- B2 <- B3 <-- rmt2/master
在A
提交代表你从远程带来了一切rmt1
(远程你有开始,大概gitorious
现在)。在这里,您还拥有一个本地提交,并对L
从那里得到的东西进行了一些更改rmt1
,并且您刚刚添加了remotermt2
并带来了其提交图(B
提交)。
如果现在运行git remote remove rmt1
,git会删除配置行以及rmt1/master
标签。这是您所剩下的,不包括已变得不可见但尚未被垃圾收集的提交:
L <-- master
/
A0 <- A1
B0 <- B1 <- B2 <- B3 <-- rmt2/master
这里的问题是您自己的局部更改(commit L
)使用并因此保留了至少一些原始提交图A
-series提交。
大概,您想做的是找到部分或全部不是 rmt1
提交的本地提交,查看要保留的更改,并在B
-中找到一些合适的提交作为这些更改的基础。系列提交。如果只有一个本地提交(在这种情况下),那很容易;但是如果有很多,则必须决定要保留哪个。
在许多情况下,您现在有一个或两个正在使用的分支,这些分支的尖端就是您想要保留的。在这种情况下,您可以简单地保存旧的git存储库,通过克隆B
系列(在本例中为git.savannah.gnu.org
)创建一个新的git存储库,然后在新存储库中选择要移植到的某些分支活跃的分支提示。在这里,您只需要使用保存的存储库提取补丁(例如git diff或git format-patch),然后将其导入新的存储库。从概念上讲,这要简单得多。
但是,在其他情况下,您可能真的希望将两个远程存储库的内容都保存在一个存储库中,至少要保留一段时间,直到可以重新设置基准或保存更改为止。这是保存和复制两组DAG的便捷方法,它使您可以在任一(独立)图中的提交上使用git命令,包括将一个树与另一个图进行比较。从概念上讲,它是更复杂的,并且是您当前的发展方向。
在不了解您的情况的情况下,我无法真正推荐一种方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句