将gist链接到github存储库,但将不同的文件推送到每个存储库
我创建了一个项目作为单个文件。然后我将我的项目扩展到多个文件(例如,通过添加自述文件和许可文件)。我现在在本地git存储库上设置了两个远程,我称之为origin gist和origin github。我可以推动他们,世界上的一切都是正确的 但我真正想要的是,要点只保留单个文件,而不需要增加额外的开销。如何在保留一个本地存储库并将其推送到两个远程存储库的同时做到这一点 顺便说一句,如果我能控制文件在gist中显示的顺序,我就不在乎了。我也不愿意重命名我的文件,以通过一个抽象的排序归纳出所需的顺序 有什么建议吗将gist链接到github存储库,但将不同的文件推送到每个存储库,git,github,gist,Git,Github,Gist,我创建了一个项目作为单个文件。然后我将我的项目扩展到多个文件(例如,通过添加自述文件和许可文件)。我现在在本地git存储库上设置了两个远程,我称之为origin gist和origin github。我可以推动他们,世界上的一切都是正确的 但我真正想要的是,要点只保留单个文件,而不需要增加额外的开销。如何在保留一个本地存储库并将其推送到两个远程存储库的同时做到这一点 顺便说一句,如果我能控制文件在gist中显示的顺序,我就不在乎了。我也不愿意重命名我的文件,以通过一个抽象的排序归纳出所需的顺序
我发现这个问题中的信息很有用:,但需要一些澄清。最简单的解决方案可能是保留两个独立的分支,一个只包含脚本(我将其命名为
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
之后,您只需要确保两个脚本都保持最新,因此对一个分支所做的任何更改都应该同时对另一个分支所做的更改
您可以通过以下两种方式之一简化此过程:
cherry pick
从一个提交到另一个合并主分支到最小分支中,它会将这些额外文件添加到最小。但是假设minimal
分支只包含实际脚本,您应该能够安全地从minimal
合并到master
,而无需添加这些额外文件:
这样,在网上找到要点的人就可以直接找到图书馆的最新版本,你不必担心两个不同的位置都是最新的。谢谢你的回复。两个问题:1)远程设备是否特定于分支?我想不会吧。所以当我在最小分支时,我可能会错误地推原始主机,反之亦然?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
,因为命令如下所示:git push-u
。虽然在回购协议中,您的分支机构被命名为minimal
,但我相信GIST是远程存储在master
分支机构中的。我绝对愿意用类似的方法解决我的核心问题。但我也认为这是一个学习git新知识的机会。不管怎样,谢谢你的建议;从长远来看,这可能就是我最终要做的事情。
# 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