LoginSignup
1
0

XcodeでGit管理下のファイルが見つからず、Pullできないとき

Posted at

TL;DR

ターミナルで競合解消

対象読者

ターミナル初心者
git初心者

Pullできねえ

Make sure a valid file exists in the repository and try again.
The source control operation failed because the file “####.swift” could not be found.

ってエラーが出ました。(Xcode 14.3)
XcodeのNavigator Area(画面左側のファイル一覧)では明らかにあるのに。(怒り)
どういう訳か、うまいことファイルが認識できていないようなので、ターミナルで確認してみます。

.git fileがあるフォルダまで移動する

%cd (DEMO.xcodeprojを内包するフォルダ)

git statusを確認。

% git status 
rebase in progress; onto ハッシュ値
You are currently rebasing branch 'ブランチ名' on 'ハッシュ値'.
  (fix conflicts and then run "git rebase --continue")
  (use "git rebase --skip" to skip this patch)
  (use "git rebase --abort" to check out the original branch)

Unmerged paths:
  (use "git restore --staged <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
	both added:      ####.swift

どうやら、競合が起きているようです。
(fix conflicts and then run "git rebase --continue")と言っているが競合は具体的にどう解消するんだ。

ChatGPT先生に聞くと

  1. コンフリクトしたファイルをテキストエディタで開きます。ファイル内には、コンフリクトのマーカーとして特殊な文字列(通常は<<<<<<<, =======, >>>>>>>)が表示されます。
  2. マーカーの上と下のコードブロックは、競合している変更内容です。適切な変更を選択し、コードを修正します。または、完全に新しいコードを記述することもできます。
  3. コードの修正が完了したら、修正したファイルを保存します。
  4. 修正したファイルをGitにステージングします。コマンドラインでgit add <ファイル名>を実行するか、GUIツールを使用して変更をステージングします。
  5. ステージングした修正をコミットします。コマンドラインでgit commitを実行するか、GUIツールを使用してコミットメッセージを入力します。
  6. コミットが完了したら、git rebase --continueコマンドを実行してリベースの継続を指示します。これにより、次のコンフリクトがある場合は同じ手順で解決できます。

なるほど。この説明の通り進めていくと、git commitで少しつまづいた。ターミナルの画面が普段と違う見た目、操作感になった。ChatGPT先生に聞いてみると、ターミナル内のエディタという概念があるらしい。

ターミナル内で使用されるエディタは、テキストベースの操作インタフェースを提供します。これにより、テキストファイルを表示し、編集し、保存することができます。いくつかの一般的なターミナルエディタには、Vim、Emacs、Nanoなどがあります。

多分今回起動したのはVimかな?Commit message を好きなものに書き換え、ESC キーを押してコマンドモードに移行し、:wqでエディタを終了できる。
あとは

git rebase --continue

で無事rebaseできた。

cf.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0