我正在 Xcode 中处理一个 Objective C 项目,需要恢复到在源代码管理中提交的先前版本。我怎么做?我可以找到有关如何提交和推送的信息,但没有有关如何恢复到旧版本的信息。
7 回答
您不能在 Xcode 中一次恢复整个项目,但您可以从终端执行;只需 cd 进入您的项目文件夹并输入 git log 以找到您要查找的哈希,然后执行 git checkout [ hash ]。
“比较文件版本以还原代码行 选择视图 > 版本编辑器 > 显示比较视图以比较存储库中保存的文件的版本。使用跳转栏根据文件在存储库中的位置选择文件版本。每个跳转栏控制选择用于其上方的内容窗格。要显示版本,请浏览层次结构以找到它,然后单击以选择它。阴影区域表示版本之间的更改。“您可以使用版本时间线根据时间顺序选择文件版本。单击中心栏中的时间线查看器图标(../art/TimeLineIcon_2x.png)以显示两个编辑窗格之间的时间线。将指针向上移动或向下浏览时间线以浏览可用版本。当您找到想要的版本时,单击左侧或右侧指示器三角形以在相应的编辑器窗格中显示该版本。您可以在版本编辑器中编辑文件的当前工作副本。如果您想恢复版本之间的更改,您可以从旧版本复制代码并将其粘贴到当前版本中。”
最后一行揭示了关键:复制和粘贴。
在 Xcode 9 中,您可以签出任何以前的版本。
- 单击左侧导航器部分中的源代码管理图标,或转到查看->导航器->显示源代码管理导航器。
- 将显示所选分支的所有提交的列表。
- 右键单击所需的提交并选择“结帐“commitID”
您也可以直接从那里创建一个分支,这在某些情况下可能更有用
如果您想在单独的文件夹中获取任何已提交版本的整个项目提取,请尝试以下 shell 脚本:
#!/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 9.2 项目,该项目具有多个依赖项和已合并到其中的附加文件。在清理它的过程中,我无意中破坏了这个项目,直到我找到这个解决方案,我才知道该怎么做才能让它运行。我确实去了顶部菜单栏上的源代码管理并首先放弃了所有更改。然后我去了源代码控制管理器(从左数第二个到项目导航器的右侧并突出显示我想要的提交然后右键单击并选择 Checkout 选项,它已经输入了我想要的提交编号并且它工作得很好. 第 1 步 - 放弃所有更改 第 2 步 - 选择要返回的 Commit 第 3 步 - 右键单击并选择 Checkout