【问题标题】:Link a gist with a github repository, but push different files to each将 gist 与 github 存储库链接,但将不同的文件推送到每个存储库
【发布时间】:2014-09-04 22:11:22
【问题描述】:

我创建了一个项目作为单个文件 gist。然后我将我的项目扩展到多个文件(例如,通过添加 README 和 LICENSE 文件)。我现在在我的本地 git 存储库上设置了两个遥控器,我称之为 origin-gist 和 origin-github。我可以推给他们,世界上一切都很好。

但我真正想要的是将要点保留为单个文件,而不需要添加内容的开销。如何在保留一个推送到两个遥控器的本地存储库的同时做到这一点?

顺便说一句,如果我可以控制文件在 gist 中显示的顺序,我就不会在意了。我也不愿意重命名我的文件以使用 ASCII 排序来诱导所需的顺序。

有什么建议吗?

我发现这个问题中的信息很有用:Transfer gist repo to github,但需要澄清一下。

【问题讨论】:

    标签: git github gist


    【解决方案1】:

    这个答案并没有直接回答你提出的具体问题,但它确实解决了手头的问题,因此被添加为答案而不是评论。

    值得问问自己,是否有理由保留并更新旧要点?

    这个问题的最简单的解决方案,也是我经常看到的,是用一个 README 文档替换了要点,上面写着:

    此要点已移至其自己的存储库:http://github.com/OctoCat/HelloWorld

    以这个“前要旨”为例:https://gist.github.com/weakish/492755

    这样,在线找到要点的人可以被引导到图书馆的最新版本,而您不必担心保持两个不同的位置都是最新的。

    【讨论】:

    • 我绝对愿意用这样的方法解决我的核心问题。但我也认为这是一个学习 git 新知识的机会。不管怎样,谢谢你的建议;从长远来看,这可能是我最终要做的事情。
    【解决方案2】:

    最简单的解决方案可能是保留两个单独的分支,一个只包含脚本(我将其命名为minimal),一个包含所有额外文件(master)。然后确保每个分支的“上游”设置正确:

    # In the 'minimal' branch
    git remote add gist git@gist.github.com:/1162032.git
    git push -u gist master
    
    # In the 'master' branch
    git remote add origin git@github.com:octocat/Hello-World.git
    git push -u origin master
    

    之后,您只需要确保两个脚本都保持最新状态,因此您对一个分支所做的任何更改都应该对另一个分支进行。

    您可以通过以下两种方式之一来简化此操作:

    1. 当您进行更改时,cherry-pick 从一个提交到另一个。
    2. 如果您在进行更改时将mergemaster 分支到minimal 分支,它会将这些额外文件添加到minimal。但假设minimal 分支只包含实际脚本,您应该能够安全地从minimal 合并到master,而无需添加那些额外的文件:
    # First, make edits to the 'minimal' branch, commit them, then push the changes to 'gist'
    # Now, apply those changes to master like this:
    git checkout master
    git merge --no-ff minimal -m "Update script to latest version"
    git push # Push the changes to the GitHub repo
    

    【讨论】:

    • 感谢您的回复。两个问题:1)遥控器是特定于分支机构的吗?我假设不是。所以我在最小分支时可能会错误地push origin master,反之亦然? 2)你提出的git合并中--no-ff的目的是什么?
    • @pabo 1) 不,遥控器是特定于存储库的,然而,这就是我在第一块代码中添加-u(或--set-upstream)标志的原因.上游分支和存储库特定于分支的。然后当您运行git push 时,它会自动推送到您设置为上游的分支,因此您不会错误地推送到不同的分支或仓库。
    • 此外,来自最小分支的推送是否应该看起来像 git push -u gist minimal 而不是 git push -u gist master
    • 所以一旦我第一次使用 -u 运行推送,我可以运行 git push 而不需要更多参数,它会根据我签出的分支转到正确的远程?
    • @pabo 它应该是git push -u gist minimal,因为命令看起来像这样:git push -u <remote-repo> <remote-branch>。尽管您的分支在您的仓库中被命名为minimal,但我相信要点远程存储在master 分支中。
    猜你喜欢
    • 2012-08-25
    • 1970-01-01
    • 2020-06-17
    • 2017-11-29
    • 2021-03-05
    • 2016-06-13
    • 2021-11-27
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多