相关疑难解决方法(0)

git移植和替换有何不同?(移植物现在已被弃用吗?)

有极少数的Q&A的上的git graftsreplace.搜索[git] + grafts + replace只发现了两个与5. what-are-git-info-grafts-forgit-what-a-a-graftcommit-or-a-graft-id相关的两个.git.wiki.kernel.org:GraftPoint上还有一个注释

被移植现在完全取代replacefilter-branch,或者他们仍然需要一些特殊的情况(和向后兼容)?

一般来说,它们如何不同(例如哪些在回购之间运输),它们通常是如何相同的?我已经看到Linus似乎并不关心目前在关于提交代数的讨论(最大父母回到任何根种类)的问题"移植已经不可靠了."

编辑:找到更多信息.
搜索www.kernel.org/pub/software/scm/git/docs graft仅找到3个结果:

  1. GIT-滤波器分支(1),
  2. v1.5.4.7/GIT-滤波器分支(1),
  3. v1.5.0.7/GIT-s​​vn的(1).

稍微宽泛的搜索发现RelNotes/1.6.5.txt包含:

  • refs/replace/hierarchy被设计为可用作"移植"机制的替代,其附加优势是它可以跨存储库传输.

不幸的是,gitrepository-layout(5)还没有更新refs/replace/repository布局信息(和注释),也没有任何信息/移植的弃用说明.

这更接近支持我的想法,但我欢迎任何确认或澄清.

git

53
推荐指数
3
解决办法
1万
查看次数

如何在没有共同祖先的情况下合并两个分支?

我已经开始在我的项目中使用Git,其中前两个提交只是一些初始设置(.gitignore和.gitattributes),第三个提交M2添加了SVN主干的内容:

I1 -- I2 -- M2 -- N -- .. -- Z
Run Code Online (Sandbox Code Playgroud)

我已经在名为svn的分支中导入了SVN历史记录,其中M1是SVN中继(内容与M2相同,除了.gitignore和.gitattributes):

A -- B -- ... -- K -- L -- M1
Run Code Online (Sandbox Code Playgroud)

问:合并两个分支的最佳方法是什么?

我可以将M1M2合并到M3中,然后重新绑定,但我不知道如何删除I1I2提交,如果我可以安全地删除M3提交(我已经找到一些建议来保留合并提交,但是这种情况M3不再需要了).

A -- B -- ... -- K -- L -- M1
                             \
                              M3 -- N' -- .. -- Z'
                             /
               I1 -- I2 -- M2 -- N -- .. -- Z …
Run Code Online (Sandbox Code Playgroud)

git merge rebase

30
推荐指数
3
解决办法
2万
查看次数

如何将过去添加到git存储库?

我收到了一些源代码并决定使用git,因为我的同事使用了mkdir $VERSION等方法.虽然代码的过去目前似乎并不重要,但我仍然希望将其置于git控制之下以更好地理解开发过程.所以:

将这些过去的版本放入我现有的git仓库的简便方法是什么?目前没有远程仓库,所以我不介意重写历史记录,但考虑到远程存储库的解决方案当然是首选,除非它更复杂.基于目录或基于档案文件的历史记录,不需要任何更多交互的脚本的加分点.

git

25
推荐指数
1
解决办法
3927
查看次数

git:如何从项目中分离库?filter-branch,subtree?

所以,我有一个更大的(闭源)项目,并且在这个项目的上下文中创建了一个在其他地方也可以使用的库,我想.

我现在想要在自己的项目中拆分库,它可以作为github或类似的开源.当然,图书馆(及其历史)应该不包含我们项目的痕迹.

git-subtree在这里似乎是一个解决方案,但它并不完全适合.

我的目录布局是这样的(因为它是一个Java项目):

  • 击剑比赛 (git workdir)
    • SRC
        • fencing_game
          • 运输 (我的图书馆)
            • 协议 (图书馆的一部分)
            • fencing (与库连接的主项目的一部分)
            • 客户端(与库连接的主项目的一部分)
            • server (与库连接的主项目的一部分)
          • 客户(主要项目的一部分)
          • 服务器(主项目的一部分)
          • ...... (主要项目的一部分)
    • 其他文件和目录(构建系统,网站等 - 主要项目的一部分)

拆分后,我希望库的目录布局如下所示(包括直接在粗体目录中的任何文件):

  • 我的图书馆(名字待定)
    • SRC
        • fencing_game
          • 运输 (我的图书馆)
            • 协议 (图书馆的一部分)

历史记录还应该只包含主项目历史中涉及存储库这一部分的部分.

第一眼看到了我git-subtree split --prefix=src/de/fencing_ame/transport,但这会

  1. 给我一棵树根transport(不会编译)和
  2. 包括transport/client,transport/servertransport/fencing目录.

第一点可以通过git subtree add --prefix=src/de/fencing_ame/transport <commit>在接收端使用来缓解,但我不认为git-subtree可以对导出这些子目录做很多事情.(这个想法真的是只能在这里分享完整的树).

我必须在git filter-branch这里使用吗?

拆分后,我希望能够导入回库在我的主要项目中,无论是使用Git树或混帐子模块,在一个单独的子目录,而不是它现在是.我想象这样的布局

  • 击剑比赛 (git workdir)
    • SRC
        • fencing_game
          • 运输 (空)
            • fencing (与库连接的主项目的一部分)
            • 客户端 …

git git-submodules git-filter-branch git-subtree

23
推荐指数
1
解决办法
5501
查看次数

如何连接两个git历史?

我有两个与切线相关的git存储库.即,一个人的内容是另一个人的前身.我想以某种方式将存储库A的完整历史添加到存放处B中,以便A的提示将成为存储库B的第一个变更集的父级?两者的历史都非常线性.

这可能吗?

git history repository

12
推荐指数
1
解决办法
1441
查看次数

SVN中维护分支的工具

我的团队使用SVN进行源代码管理.最近,我一直在努力从树干偶尔合并一个分支,它一直是一个相当恼人的经验(参见乔尔斯波斯基的"颠覆故事#1"),所以我一直在寻找替代方法来管理分支与合并.鉴于集中式SVN存储库是不可协商的,我想要的是一组满足以下条件的工具.

  1. 完整的修订历史应存储在SVN中,用于中继和分支.

  2. 在任何一个方向(并且可能是纵横交错)的合并应该是相对无痛的.

  3. 合并历史记录应尽可能存储在SVN中.

我已经看过这两个git-svn并且bzr-svn似乎都没有达到工作 - 基本上,鉴于他们可以从SVN存储库导出的修订历史,他们似乎没有比SVN更好地处理合并工作.例如,用克隆库后git,我的分支修订历史记录显示原分公司关闭行李箱,但git没有"发现"任何临时SVN的合并为"原生"合并,修订历史是一个长行.因此,任何尝试从git收益中继合并收益与SVN合并一样多的冲突.(此外,git-svn文档明确警告不要使用git分支之间的合并.)

有没有办法调整我的工作流程以git满足上述要求?也许我只需要提示或技巧(或单独的合并工具?)来帮助SVN更好地融入分支机构?

svn git version-control merge branch

5
推荐指数
1
解决办法
284
查看次数

将旧版本的代码添加到git repo

我的项目有一个git repo,我的第一次提交是在v1.2.在git之前我使用我的代码的每日快照来保证它的安全.我现在想要将所有快照添加到repo中以及启动v0.3,但我已经在1.2之上提交了相当多的提交.那么最好的方法是什么?我应该逐个提交快照并添加标签吗?或者我应该为所有这些快照创建另一个分支?或者也许用v0.3启动一个新的repo并提交所有快照,然后以某种方式合并repo和旧的基于1.2的repo?

git

5
推荐指数
2
解决办法
949
查看次数

“弧形嫁接”和“弧形补丁”之间有什么区别?

arc help --full | less显示以下内容graft

  graft revision

      Grafts revision and its dependencies (if any) onto your working tree.

      --force
          Do not run any sanity checks.

      --skip-landed
          Do not try to patch landed/closed diffs.
Run Code Online (Sandbox Code Playgroud)

这是为了patch

  patch D12345
  patch --revision revision_id
  patch --diff diff_id
  patch --patch file
  patch --arcbundle bundlefile
      Supports: git, svn, hg
      Apply the changes in a Differential revision, patchfile, or arc
      bundle to the working copy.

      --arcbundle bundlefile
          Apply changes from an arc bundle …
Run Code Online (Sandbox Code Playgroud)

git phabricator arcanist

4
推荐指数
2
解决办法
1631
查看次数