XCode:使用命令行工具,如何从文件夹创建 git 并将其导入项目

Posted

技术标签:

【中文标题】XCode:使用命令行工具,如何从文件夹创建 git 并将其导入项目【英文标题】:XCode : Using the command line tools, how do I create a git from a folder and import that on a project 【发布时间】:2013-10-20 13:37:23 【问题描述】:

我在 ~/Documents/Share 上有一个文件夹,其中包含我经常使用并且可以一起工作的类。我想在 git 子模块中转换该文件夹,然后将其导入 Xcode 5。我的想法是在很多项目中使用该 git。

在过去的 3 个小时里,我一直在努力解决这个问题。我在网上尝试了十几个“简单”的说明,但没有一个奏效。

我该怎么做?我想要的只是创建一个本地子模块来处理本地项目。

请不要给露骨的解释......像我五岁一样解释我(因为我以前从未使用过git)。

是的,我对终端很熟悉。


当我尝试按照建议执行 git push 时,我看到了这个错误:

Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 292 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error: 
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error: 
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.

【问题讨论】:

你做了什么,遇到了什么错误? 在收到此错误之前您具体做了什么? 也许这个链接有帮助:***.com/questions/2816369/… 【参考方案1】:

我不确定它是否以及如何与本地子模块一起使用,但我们对我们的 bitbucket 帐户进行了类似的操作。

要将您的文件夹转换为 git 存储库,请提交所有文件并将它们推送到服务器上:

cd yourdirectory
git init (1)
git add . (2)
git commit -m "this is my commit message" (3)
git remote add origin <adress-of-your-remote-git-repository> (4)
git push (5)
    将您的目录转换为本地 git 存储库。 将目录中的所有文件暂存到您的 git 暂存中。 提交暂存文件。 将远程源添加到本地存储库。 将本地存储库推送到远程引用。

您现在拥有一个包含所有文件的远程存储库。在任何启用 git 的项目中将其用作子模块:

cd yourprojectdirectory
git submodule add <adress-of-your-remote-git-repository> (1)
git submodule update --init --recursive (2)
    将远程存储库添加为新的 git 子模块。 初始化子模块,使其包含实际内容。

现在剩下的就是在查找器中打开添加的子模块的文件夹并将该文件夹拖到您的 Xcode 项目中。

要使用在本地项目中所做的一些更改来更新文件,您需要在项目中进行更改,然后执行以下操作:

cd yourprojectdirectory/yoursubmoduledirectory
git add changedfile.m
git commit -m "your commit message"
git push

当然,您必须将这些更改同步到您的其他项目:

cd yourotherprojectdirectory/yoursubmoduledirectory
git pull

【讨论】:

好的,谢谢你的解释!据我了解,这将在项目中制作 git 的副本,但假设我在项目中的这些文件之一上进行了更改,这些文件在原始 git 上有它们的等价物。如何将更改推送到原始 git?我不知道如何。提交只会更新项目副本。请记住,我不是在远程工作。我所有的文件都是本地的,git 和克隆。 我无法在此评论中添加格式化代码,所以我将其添加到我的答案中! 快到了。当我执行 git push 时,我看到一个错误...我已经更新了问题,因为我无法在此处放置格式化文本。 我已经用错误消息更新了我的问题。一个问题:我真的需要在项目中有一个本地副本吗?不能直接使用本地存储库吗? 不过,我仍然会尝试使用 git 子模块,因为一旦设置好它们就很容易使用,而且它们是首选的工作方式。

以上是关于XCode:使用命令行工具,如何从文件夹创建 git 并将其导入项目的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 命令行工具 (XCode 4.6) 从终端运行单元测试

如何使用 Xcode 5 从命令行运行 xctest?

如何从 bash 验证是不是已安装 xcode 命令行工具?

如何使用 Xcode 转换器创建 USDZ 文件?

从 xcode 创建一个“命令行工具”项目,然后设置并运行 NSApplication。此应用程序中的光标无法更改

如何从 OSX Swift 命令行工具或 shebang 脚本文件显示窗口?