Git
SourceTree
SpringToolSuite

git管理していないプロジェクトを既存gitリポジトリに紐付ける

経緯・概要

職場のとある案件で新規プロジェクトを作成する機会があった。
プロジェクトは、新規gitリポジトリで管理することとなっており、
リポジトリ作成は運用上の都合により別チームの方が後から作成することとなっていたので、git管理外でローカルでプロジェクトを作成し開発を進めていた。

いざ、作成された空のgitリポジトリに、開発したプロジェクトを入れようと思った時にいろいろ手間取ったので記録を残しておく。

環境

・SpringToolSuite [Version: 3.9.2.RELEASE]
・SourceTree [Version: 2.4.8.0]
・GitHub

ゴール

以下の2通りを試しましたので、それぞれの手順を記載します。

①リポジトリの配下にプロジェクト
プロジェクト「test-project1」とプロジェクト「test-project2」がリポジトリ配下に存在する
image.png

②リポジトリ=プロジェクト
リポジトリがプロジェクトのルートディレクトリになっている感じです。
image.png

共通手順

ミスったときのために対象プロジェクトをzip等でコピって退避しておく

0.空のリポジトリ(READMEあるけど)がある【GitHub】
image.png

手順(①リポジトリの配下にプロジェクト)

1.リポジトリをクローンしてくる【SourceTree】
  ※必要に応じてブランチを切り替えること
image.png

2.「Add an existing local Git repository」でリポジトリを追加【STS】
image.png

image.png

3.追加対象のプロジェクトを 右クリック>Team>Share Project【STS】
image.png

[リポジトリ名]がつきました
image.png

リポジトリのディレクトリを見てみると入ってるのがわかります
image.png

4.プロジェクトのコミットとプッシュ【SourceTree】
 手順3でリポジトリ配下に移動されたので作業コピーに表示されています。
 ステージングしてコミット、プッシュしましょう。
image.png
 ★デフォルト?だと「.gitignore」の除外設定に「.project」が入っているので、「.project」がコミット対象になりません。必要に応じて除外設定を修正してください。※これがないと追加したプロジェクトがプロジェクトとして扱われません。

5.おわり
githubでみるとプロジェクトが配下に入ってることが確認できます。
image.png

複数のプロジェクトを1つのリポジトリにぶら下げる時は同様の手順で追加すればよさそうです。

手順(②リポジトリ=プロジェクト)

1.対象プロジェクトをgit管理(ローカルリポジトリ)にします。【SourceTree】
 SourceTreeからターミナルを起動して、
 対象プロジェクトのルートディレクトリに移動し「git init」と叩きます。
image.png

2.SourceTreeに、git管理(ローカルリポジトリ)にしたプロジェクトを追加します。
image.png

3.ローカルリポジトリにプロジェクトをコミットします。
 プッシュはしません。(この時点では紐付いているリモートがないです)
 ※「.gitignore」の除外設定を必要に応じて修正してください。
image.png

4.ローカルリポジトリにしたプロジェクトを、リモートリポジトリに紐付けます。
 設定を押下
image.png
 リモートタブで「追加」を押下
image.png
 リモートリポジトリの情報を入れます。
image.png
 追加されました。
image.png

5.紐付けたリモートリポジトリにプッシュします。
 プッシュ先を紐付けたリモートリポジトリにして、
 リモートブランチを任意のリモートブランチにします。
image.png

6.おわり
githubでみるとリポジトリがプロジェクトの内容になっていることがわかります。
※gitignoreいじり忘れました
image.png

あとがき

7年くらいSEやっててこんなことで躓くとは恥ずかしい・・・。
でも、こういうことした経験が今までなかったのも事実。
いままでは既存リポジトリやプロジェクトが存在するところから、それに対して改修するってパターンが多かったので。。
よい経験となった。