【问题标题】:How do I switch entire XCode 8 project to previous commit如何将整个 XCode 8 项目切换到以前的提交
【发布时间】:2017-11-29 15:34:06
【问题描述】:

我只需要将我的项目恢复到以前的提交。我已经在使用 XCode 的内置工具(和 git)进行版本控制。

我也已经看到了:[How to switch entire XCode project to previous commit] 但我与 SourceTree 或 Schemes 无关。

我已经尝试使用 SmatGit 恢复,但 XCode 说它无法理解生成的项目的格式。

我从这里How to revert Git repository to a previous commit? 和这里How do I restore from a previous commit on Xcode 8? 尝试了很多命令

我正在使用 Udemy 课程中的 Tinder 克隆,当我添加 Facebook SDK 时,解析停止让我的用户登录。现在我想删除所有添加 FB SDK 的内容,但我尝试提供的方法到目前为止都没有帮助。仍在工作,但我希望有人能提供帮助。

【问题讨论】:

  • 你试过git reset --hard <SOME-COMMIT>吗?
  • 是的..这就是我现在的位置:

标签: xcode git


【解决方案1】:

我从不相信 Xcode 会执行此类操作。会做的

  1. 退出 Xcode
  2. 使用命令提示符并 cd 检出工作区文件夹
  3. 从命令提示符运行这些命令中的任何一个

    a) git stash
    b) git reset --hard

    如果你做第一个,你可以通过 git stash apply 再次应用你的更改

【讨论】:

    【解决方案2】:

    “比较文件版本以还原代码行选择视图 > 版本编辑器 > 显示比较视图以比较存储库中保存的文件的版本。”- Hackless How to restore previous version of code in Xcode

    【讨论】:

    • 不知道怎么在这里发帖,失败:#!/bin/sh # # restores an old version of xcodeproject from git repository # into folder $HOME/gitcopy # current directory must be the rootdir of the project # Xcode should not access the same project at this time # set -x PROJECT_ROOT=. COPY_DEST=$HOME/gitcopy if [ -e *.xcodeproj ] then git log echo "Which version ?" read x git checkout $x git checkout -b copyVersion cp -R $PROJECT_ROOT $COPY_DEST git stash git checkout master; else echo "No xcode project root folder"; fi
    • 如果你想恢复的版本是最后一次保存,你可以去文件>恢复保存在xcode中。
    【解决方案3】:

    这是迄今为止我见过的最好的尝试......

    #!/bin/sh
    #
    #  restores an old version of xcodeproject from git repository
    #  into folder  $HOME/gitcopy
    #  current directory must be the rootdir of the project
    #  Xcode should not access the same project at this time
    #
    set -x
    PROJECT_ROOT=.
    COPY_DEST=$HOME/gitcopy
    if [ -e *.xcodeproj ]
    then
        git log
        echo "Which version ?"
        read x
        git checkout $x
        git checkout -b copyVersion
        cp -R $PROJECT_ROOT $COPY_DEST
        git stash
        git checkout master;
    else
        echo "No xcode project root folder";
    fi 
    

    它来自How to restore previous version of code in Xcode,但在此过程中丢失的文件比必要的多...

    好的.. 那是终极解决方案。 问题是 XCode 创建了一些我只是通过引用添加的文件,并没有添加到项目中,所以,我认为 git 不知道它们。

    当我最终从项目的旧副本中手动添加 Missing(以红色突出显示)文件时,所有内容都根据感兴趣的提交进行了说明。

    感谢您的帮助。

    你必须运行脚本,选择你想要的提交代码,然后解决方案将被复制到 ~/gitcopy 目录中。在 XCode 中打开项目并从项目的先前副本(或进行引用)中复制任何丢失的文件...

    【讨论】:

    • 等等,我不明白。为什么你不能只使用 git revert
    • 当我这样做时,XCode 说它无法再解析项目......但我似乎会广泛测试这个 git。我认为问题在于我是从示例开始项目的,所以,即使在我最初提交之前,项目中也有提交,看起来像是两个不同的项目。也许这就是你从事开源工作时的意思项目...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2017-09-25
    • 2015-09-05
    • 2016-11-04
    • 2016-04-15
    • 1970-01-01
    相关资源
    最近更新 更多