質問: ### 前提・実現したいこと Unityのプロジェクトを、GitLab,Source Treeにて管理したい。 ※UnityのProject名とGit LabのProject名を一致させ、Source Treeと連携させたい。 * **最終的に実現させたい図(下図参照)** ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/c4946736e1a85b19d64c16d0c755a289.png) ### 以下、達成したいTestプロジェクトのフォルダ内構図。かつPushがGitLabへちゃんとできることが必須です。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/bb603220925a0819ea98980f3c4fa993.jpeg) * **設定(下図参照)** ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/a6e787643f2f8efe329b6c3e4c156bc5.jpeg) ### 発生している問題・エラーメッセージ 問題は、上図の構成(階層)にならない。 Source TreeのPush時のエラー内容。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/ec3d6f29af5d9d29323879e97beff911.jpeg) 以下、エラー文抜粋 ``` git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --tags --set-upstream origin master:master Pushing to https://gitlab.com/pj-test77/test.git To https://gitlab.com/pj-test77/test.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'https://gitlab.com/pj-test77/test.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. ``` またこのエラー発生後、GitLabにはUnityのTestプロジェクトはPush一つもPushされていない。 また上記エラーが発生するまでの手順を以下に記載。 1. GitLabでプロジェクトを作成し、CloneするためHTTPS URLをCopy 2. Source TreeにてCloneし、保存先フォルダは任意のフォルダを指定。 3. Unityにて、GitLabのProject名と同じProject名を作成し、保存先を上記2での保存先フォルダに指定すると、 Project名のフォルダが作成されてしまうため、 例えば、 * Git LabではTest * UnityでもTest というProjectを作成すると、Testフォルダの中に、Testフォルダ(プロジェクト)が作成されてしまう。 皆さんは、Source TreeとGitLab(GitHubでも可)とUnityを連携させる際、 どのような手順で、プロジェクトを作成されているのでしょうか。 どうしてこのようなエラーが発生してしまうのか、ご存知の方がいらっしゃいましたら教えていただけますでしょうか。 よろしくお願いいたします。 ### 試したこと ググって、YouTubeでの操作を観たり、ブログ、書籍、ほか、参考にして、 様々なパターン(階層の変更・Project保存先の変更・GitLabのUsername、Passwordの変更、Access Tokenの利用など) を試してみましたが、実現したい構成の図にはならないです。 つまり、いつも詰まるのは、UnityでのProjectと保存先フォルダ指定をどうすればいいのか、 GitLabのほうは恐らく間違えていないので、Source Treeか、Unityのどちらかと思っています。 ### 補足情報(FW/ツールのバージョンなど) * Source Tree:ver 3.3.8 * Unity 2019.2.21f1
回答: > > 皆さんは、Source TreeとGitLab(GitHubでも可)とUnityを連携させる際、 > > どのような手順で、プロジェクトを作成されているのでしょうか。 > > > に対する回答です。 **GitHubの場合**ですが、下記のように行っています。 ※環境:Windows 10 Professional 64bit / Visual Studio Code / GitHub (free) Source Tree 3.3.8 git version 2.26.1.windows.1 (Source Tree インストール時に、Git及びターミナル(MINGW64/Bash)を一緒にインストールしています) (試していませんが、ターミナルをインストールしていない場合は、コマンドプロンプトでも代用できるはず) [1] GitHubで新規リポジトリを作成、Clone用のHTTPS URLをCopy。 **このとき、ライセンスのテンプレート引用やREADME.md等は作らず、まっさらなリポジトリを作ります** [2] ローカルのpushしたいUnityプロジェクトフォルダで、右クリックし、「Git Bash Here」を開く。 (またはpushしたいプロジェクトフォルダをコマンドプロンプト等で開く) <以下[3]~[5]までは、開いたターミナル(またはコマンドプロンプト)での作業になります> [3]ローカル側でまだgitでリポジトリ設定していない場合、以下を入力(先頭の$マークは入力不要) (**すでにローカルでgitリポジトリ構築済みの場合は、[3] を行うと今までの履歴がリセットされてしまうので、[3]は飛ばして[4] へジャンプ**) ``` $ git init $ git add . $ git commit -m "Initial commit" ``` [4] 以下を入力してローカルとリモートを紐づけます ``` $ git remote add origin https://github.com/ユーザ名/リポジトリ名.git(=[1]でCopyしたURL) ``` [5] 以下を入力して、ローカルのリポジトリをリモートにpushします。 ``` $ git push -u origin master ``` ここまで何もエラーが発生しなかったら、GitHubにファイルがコピーされているはずです。 この後、SourceTreeのタブ右端の「+」ボタン押して出るメニューから、「Add」ボタンをクリックし、今処理したローカルフォルダを指定すれば、SourceTree上で管理できるようになるはずです。