3

Xcode 4.4.1 で取り組んでいるプロジェクトがあり、以前のブランチに戻りたいと考えていました。(分岐は複雑ではありませんが、直線的な展開を表すことに注意してください)

前のブランチを選択すると、警告が表示されました

UserInterfaceState.xcuserstate: warning: Merge conflict: File still marked as conflicted

すべて問題ないように見えましたが、ビルドと実行のメニュー項目がすべてグレー表示されているため、何もできません。

私は最新のブランチに戻そうとしましたが、これは問題ないように見えますが、まだマージの競合があります

git status を試しましたが、役に立ちませんでした

# Unmerged paths:
...
#   deleted by them:    MyProject.xcodeproj/project.xcworkspace/xcuserdata/ian.xcuserdatad/UserInterfaceState.xcuserstate
#
# Changes not staged for commit:
...
#
#   deleted:    MyProject.xcodeproj/xcuserdata/ian.xcuserdatad/xcschemes/QuollEyeTree.xcscheme

git reset HEAD を試しましたが、これは役に立たないようで、ここからどこに行けばよいかわかりません。

Git はコードを以前のバージョンと照合するのに便利ですが、バージョンを交換しようとするたびに問題が発生します。

ワークスペースを作成して別のプロジェクトを追加しようとしたときに、現在の問題が悪化したようです。元のプロジェクトは Xcode 3 で作成され、プロジェクトとファイルはプロジェクト ディレクトリのすぐ下にあります。

編集 - 解決済み

以下の回答では問題は解決しませんでしたが、どちらも役に立ちました。

プロジェクトディレクトリからコードを保存し、最新のブランチを削除しました

git reset --hard HEAD~1

次に、変更されたファイルをプロジェクト ディレクトリにコピーして戻します

.gitignore も更新しました(以前に行ったと思っていました)

4

4 に答える 4

5

マージの競合が発生した場合は、最初に解決する必要があります。(まあ、実行git merge --abortして元に戻すことができます)。

つまり、競合するファイルを開き、競合を探して解決し (競合する行を編集)、ファイルを保存して追加し (を使用してgit add -u)、コミットします。

その後、クリーンな作業ディレクトリで作業できます。

ちなみに、競合はおそらく次のようになります。

<<<<<<< yours:sample.txt
Conflict resolution is hard;
let's go shopping.
=======
Git makes conflict resolution easy.
>>>>>>> theirs:sample.txt

参照: http://www.kernel.org/pub/software/scm/git/docs/git-merge.html

于 2012-08-30T08:57:18.317 に答える
1

何よりもまず、*.xcuserstateと パターンを追加して、他のユーザー固有のプロジェクト ファイルを無視することを習慣にしてください.gitignore。Xcode プロジェクト用のものを含む、.gitignore ファイル用の人気のある github リポジトリがあります。

(前述のように) マージの競合を解決することに加えて、別のヘッド (ブランチ、タグなど) をチェックアウトしている間は、変更を隠しておくことも良い習慣にする必要があります。

于 2012-08-30T09:07:47.793 に答える