有时,我正在使用的某个软件的原始 GitHub 存储库(例如linkchecker)很少或根本没有开发,而已经创建了很多分支(在这种情况下:142,在撰写本文时)。
对于每个叉子,我想知道:
对于每个这样的分支:
GitHub 有一个用于比较 fork 的网络界面,但我不想为每个 fork 手动执行此操作,我只想要一个包含所有 fork 的结果的 CSV 文件。这怎么能被脚本化?GitHub API 可以列出 fork,但我看不到如何将 fork 与其进行比较。依次克隆每个 fork 并在本地进行比较似乎有点粗糙。
我使用构建了一个存储库
git clone --mirror <url>
Run Code Online (Sandbox Code Playgroud)
我想删除一些远程分支,但我得到以下内容:
$ git push origin :b
error: --mirror can't be combined with refspecs
Run Code Online (Sandbox Code Playgroud)
... 要么
$ git push --delete b
fatal: --delete doesn't make sense without any refs
Run Code Online (Sandbox Code Playgroud)
此外,git branch -D b不要触摸遥控器.
有没有办法从镜像克隆中删除远程分支,还是我必须为此构建另一个克隆?
我们的目标是使用git和gerrit基于托管在外部仓库(github)上的项目进行内部开发.我们会定期从外部仓库中提取新的变更和分支,并使用gerrit来管理审核流程(以及Jenkins构建所有流程).
我们的初始过程是通过git从外部仓库克隆到本地仓库,然后在gerrit中创建一个空项目,最后将本地克隆推送到gerrit.
然而,在那时,我们看到gerrit repo中没有分支!现在我们通过手动添加分支和refids来解决这个问题,但这看起来很复杂和脆弱.我认为外部分支会默认进入,没有额外的扭曲.他们当然是在github repo制作的克隆中.
理想情况下,能够直接从github克隆到gerrit并让它正常工作是很好的...不清楚为什么额外的本地回购只需要转移东西,或为什么分支不出现在gerrit中将本地克隆推送到它时进行克隆.建议?
"forking"的功能是否特定于github?或者是否有一个纯粹的git进程来创建可以从父级获取更新的"复制"子级存储库?如果是这样,怎么样?
编辑:我必须git clone对当时的情况感到困惑.这是我的理解,git clone就是我在我的机器上做的事情,以获取存储库的本地副本以进行更改commit,以及push从中进行更改.我们目前正在用gitosis主办我们的回购.所以,如果我想要一个'fork',我会在gitosis服务器本身(在原点)克隆存储库?这会创建一个新的git地址吗?
我有一个远程git存储库,具有大的历史和缓慢的连接通道.现在,一些本地用户在哪里,以及在大提交后缓慢推/拉或从头开始克隆新用户都是大问题.我想创建它的本地镜像.必须将本地更改提交到本地存储,并在后台与远程同步.我知道这个问题是需要的,但我还没有找到任何解决方案(我不是远程仓库的管理员,我只是尝试用它来简化本地工作).
我必须将几个 repos 从 Gitlab 移动到 Bitbucket 并发现最简单的方法似乎是:
git clone --mirror git@gitlab.com:path/to/repo.gitcd repo.gitgit remote set-url origin git@bitbucket.org:path/to/repo.gitgit push --mirror这似乎复制了整个 repo,包括标签、所有分支等,我还没有发现这种方法的任何缺点。但是,由于我没有在互联网上的任何地方看到过这种方法,恐怕我错过了一些东西。
我可以安全地使用此方法并在之后删除旧的存储库吗?
我本打算在存储库中问这个问题,但是SO似乎是一个更合适的问这个问题的地方。
我能够使用BFG Repo Cleaner(很棒的工具,谢谢!)将我们的.git文件夹大小减少了1GB以上,就我们的存储库而言,这是一个巨大的成功。我还没有将裸露的克隆推到远程,因为我担心在了解推入然后不重新克隆的后果之前提出这些更改。
我了解最佳实践指示,当历史以这种方式改变时,最佳解决方案是执行新克隆。但是,我与一支由50多人组成的团队合作,在超过2GB的存储空间和23k的提交中,在我们的架构下,跨团队的协调非常困难。结果,我有一些问题:
再次感谢您创建了这样一个方便的工具,希望我能完成对我的团队项目有用的工作。在此期间,我将继续尝试使用叉子。
创建镜像和创建叉子有什么区别?两者都是存储库的副本,但其中一个是浅副本(镜像),一个是深副本(分叉)吗?只是想更好地了解迁移存储库。