Steamclock使用各种工具和实用程序来构建我们的应用程序。我们把这些工具称为“齿轮”,并愿意开源它们。目前我们还在重新格式化、注释和组织我们的代码,因此如果您现在在这里,请了解即将推出文档。
SCPinions在MIT许可证下发布。
您可以克隆整个仓库,然后根据需要选择要使用的齿轮,但我们建议如果您预计需要我们在更新SCPinions时拉入更改,请使用`git subtree`。
请注意,如果您要使用以下说明,您需要安装git >= 1.7.11版本。您可以通过输入`git --version`来查看。
git remote add SCPinions [email protected]:steamclock/SCPinions.git
git fetch SCPinions
git branch SCPinions SCPinions/master
git read-tree --prefix=SCPinions/ -u SCPinions
现在您的主目录中有一个保存SCPinions的目录,并且可以使用它来处理您的项目。
要从SCPinions获取更改并将其合并到您的项目中
git checkout SCPinions
git pull
git checkout master
git merge --squash -s subtree --no-commit SCPinions
注意:如果您已对本地进行了更改,该合并将尝试覆盖这些更改。使用以下合并策略之一,首先将您的本地更改放在分支上。
我们使用`--squash`而不是直接合并的原因是,我们不想在合并两个项目时获取任一项目的提交历史。在大多数情况下,您不希望SCPinions的提交历史出现在基础项目中,我们也不想在我们的项目中包含基础项目的提交历史,特别是如果它是专有的。`--no-commit`只是为了让您在提交之前确认它是否成功。如果您希望包含我们的提交历史(但请记住,始终使用-s subtree!),则可以跳过`--squash`和/或`--no-commit`。
另一个替代策略,如果不在乎我们的历史并且没有计划做出贡献,请参阅https://help.github.com/articles/working-with-subtree-merge - 它只需一个命令就可以拉取更改,但灵活性较低。
一旦您建立了子树,要提交更改到SCPinions存储库,请执行以下操作
git checkout SCPinions
git merge --squash -s subtree --no-commit master
在此始终使用 --squash 和 --no-commit,以将项目历史记录排除在 SCPinions 之外。此外,您还可以按如下方式选择相关提交: git cherry-pick --strategy=subtree <提交ID>
此方法的好处是不会破坏其他更改,因此您可以使用它来解决您的主分支 SCPinions/ 和您的分支都有更改的问题。
重要: 当我 (afabbro) 首次尝试使用子树时,我有点担心反击上游,因为我的分支在外观上似乎在分叉后根目录中有来自我的主/主项目的文件。git 没有在 SCPinions 的相同上下文中跟踪这些文件;当您尝试使用 git 命令操作这些文件时,git 好像对它们一无所知。但我们想要的就是这样,因为我们不希望将主分支上的任何内容推送到 SCPinions。如果您遵循以上步骤,并且 git log
看起来很干净,那么您应该没问题。
嘿!你想要为 SCPinions 贡献吗?那太棒了。如果您稍做调整,将更容易做到。
如果您疯狂,也可以使用 git 子模块作为替代。