Eclipse開発環境のJavaプロジェクトをgitコマンドで管理する方法や、ec2などのリモートサーバ・クラウド環境にGit共有リポジトリを作り、リモートでEclipseで開発したプロジェクトのソースを管理(バックアップや共有)する方法について説明しています。
※ 本ページはプロモーションが含まれています。
Gitはプログラミング開発などでソースファイルのバージョン管理ツールとしてよく使われています。実際の仕事の現場でのチーム開発だけでなく、個人でWebサイト(Webサービス)やアプリを開発する時や独学でプログラミングの勉強をする場合も、Gitはソースのバージョン管理やバックアップを取っておくために使えるので非常に便利です。
Gitはどんなディレクトリもバージョン管理できますが、ここでは例としてEclipseで開発しているJavaのプロジェクト(Spring Bootプロジェクト)のディレクトリ丸ごとをgitコマンドで管理する方法について説明します。
EclipseでGitを使う場合はEGitというプラグインがありますが、ここではコマンドラインでgitコマンドを使います。
仕事のチーム開発で開発環境はEclipseでEGitを使うみたいな決め事があればそうするしかないですが、個人で開発や独学でプログラミングをしている人はやっぱりコマンドgitも便利だと思います。特に普段からコマンドラインに慣れている人は楽で簡単だと思います。
それに、コマンドラインのgitであれば汎用性がありますし、使い方を一度覚えてしまえば様々な環境でも気軽に使えるメリットがあるので、このページで説明しているEclipseやJavaなどの開発環境やプログラミング言語に関係なく、例えばPHPのLaravel、RubyのRails、PythonのDjangoなどでも、同じgitコマンド操作でディレクトリをGitで管理できるようになります。
また本記事では、EclipseのSpring BootプロジェクトのディレクトリをGit管理した後に、リモートサーバ環境にGit共有リポジトリを作り、そのリモート環境に自分のパソコンでGit管理しているSpring Bootディレクトリの内容をアップ(gitプッシュ)する方法についても説明しています。こうすれば更にバックアップにもなりますし、もしもソースファイルを色々な環境にコピーしたり配布したい時などにも便利です。
本記事ではGit共有リポジトリを建てるリモート環境の例としてAWSのec2で説明していますが、SSH接続とgitコマンドが使えればどんなクラウド・サーバ環境でも(さくらのレンタルサーバとか)同じ方法でできると思います。もちろんGitHubも使えるはずです。
◾️動作環境とバージョン情報です
OS:macOS Big Sur(バージョン11.7.1)
Eclipse:Pleiades All in One、4.16(2020-06)、Java Full Edition版、STSプラグインが入っている
->Spring Tool Suite(STS)でもほぼ同じだと思う。
$ git version
git version 2.32.0 (Apple Git-132)
EclipseでSpring Bootプロジェクトを既に作成済みという前提で話を進めます。EclipseでのSpring Bootプロジェクトの始め方については別ページで詳細を書いていますので、良ければそちらを参考にしてください。
Sprint Boot2で初めてのJavaのウェブアプリ開発
まずは、Eclipseで作ったSpring Bootプロジェクトのディレクトリへ移動します。(Spring Bootプロジェクトのディレクトリの場所は、Eclipse上でプロジェクトを右クリック->プロパティを選択するとプロパティ画面のリソース情報が見れるので、そこのロケーションで確認できます。)
$ cd /Applications/Eclipse_2020-06.app/Contents/workspace/springbootapp
(Eclipse_2020-06.appは私のEclipse環境のディレクトリで、springbootappはEclipseで適当に作ったSpring Bootプロジェクト名です。)
EclipseのSpring Bootプロジェクトのディレクトリへ移動したら、git initコマンドを実行します。
$ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /Applications/Eclipse_2020-06.app/Contents/workspace/springbootapp/.git/
コマンド実行時にhint~という警告メッセージが出ていますが、ここではこの警告を無視します。この警告メッセージの意味については別ページで説明しているので、そちらをを参考にしてください。
git initコマンド実行時に「hint:〜」の警告が出る。 - Gitでよく使うコマンドやオプション
git initコマンドを実行する事で、Spring Bootのディレクトリをgitリポジトリ管理下にできたので、これでもうgitコマンドで操作・バージョン管理を始められます。なので、EclipseでSpring Bootのプログラミング開発をしながら、ターミナルでgitコマンドを使ってコミットしたり新しいブランチを作ったりなどができます。
試しに最初のコミット(git commit)までやってみます。
[master #]$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
.mvn/
mvnw
mvnw.cmd
pom.xml
src/
nothing added to commit but untracked files present (use "git add" to track)
[master #]$ git add .
[master +]$ git commit -m"EclipseのSpring Bootプロジェクトをgitで管理。初めてのコミット。"
[master (root-commit) 0e5d56b] EclipseのSpring Bootプロジェクトをgitで管理。初めてのコミット。
9 files changed, 659 insertions(+)
〜
[master]$ git log --oneline
0e5d56b (HEAD -> master) EclipseのSpring Bootプロジェクトをgitで管理。初めてのコミット。
Eclipseでバグ修正や新規機能のJavaプログラミングする時に、今回のようにGitでバージョン管理できるようにしておけば、バックアップを取っているような状態なので、色々とプログラミング開発を気軽に試す事ができます。(何か試して失敗したらGitを使って元に戻せばいいだけなので気軽に試せる。)
■Spring Bootプロジェクトの.gitignoreファイル
EclipseでSpring Bootプロジェクトを作ると、Gitバージョン管理下に入れたくないファイルが多くあるから.gitignoreファイルを用意しないといけないと思っていたけど、EclipseのSpring Bootプロジェクトのディレクトリには最初から.gitignoreファイルが用意されていました!(もしかしたらEclipseのバージョンや使用しているプラグインによっては無いかも。)
ちなみに.gitignoreファイルの中を見るとこんな感じでした。
[master]$ cat .gitignore
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
〜
### NetBeans ###
〜
### VS Code ###
.vscode/
.gitignoreファイルを見ると、STS(Eclipse)だけでなくIntelliJなどの他のJava開発環境(IDE)も想定して準備されたようです。ここではEclipseで作ったSpring Bootプロジェクトのディレクトリをgitコマンドで管理する方法を説明をしましたが、これは別にEclipseのSpring Bootディレクトリに限った話ではないです。
gitコマンドではどんなディレクトリもバージョン管理できるので、今回説明した方法で同じようにできると思います。例えば、Eclipseで開発したJavaプロジェクトだけでなく、他の言語のWebフレームワークとかもできる。PHPのLaravel、RubyのRails、PythonのDjangoなどもできるはずです。
今回はSpring Bootプロジェクト(Eclipseプロジェクト)のディレクトリでgit initコマンドを実行してgit管理するようにしたけど、もしもEclipseのワークスペース(workspace)全体をgit管理したいなら、ワークスペースのディレクトリでgit initすれば良いです。そうすれば、複数のEclipseプロジェクトをgit管理下に置けます。
またさらに、Eclipseの複数のワークスペースやその他のディレクトリ(例えばIntelliJやPyCharmのワークスペースとか)も同時にgit管理下に置きたいなら、もう1つ上のディレクトリでgit initコマンドを実行すれば良いと思います。(もちろん各ワークスペースやプロジェクトディレクトリ毎にgit管理したいなら、そのディレクトリ毎でgit initすれば良いです)
また、.gitignoreファイルは、ファイルがあるディレクトリとそのサブディレクトリで有効になり、サブディレクトリにも.gitignoreがあればサブディレクトリの方が優先されます。
今度はリモート環境のサーバやクラウドにGit共有リポジトリ(bareリポジトリ)を作り、そこに自分のPC環境で作ったGitリポジトリ(Eclipseで作ったSpring Bootプロジェクトのソース)をプッシュして、リモート環境でSpring Bootのソースファイルを管理できるようにします。
そうする事で、リモート環境のGit共有リポジトリでSpring Bootのソースのバックアップが取れる事になりますし、共有リポジトリからgitクローン(git clone)をして色々な環境にSpring Bootのソースファイルを共有できます。
Git共有リポジトリを作る場所ですが、SSH接続とgitコマンドを使えればどんなクラウドやレンタルサーバ環境でもできると思うけど(もちろんGitHubを使うのもアリ)、ここでは例としてAWSのec2環境で試します。(ec2のOSはAmazon Linux release 2を使います)
ec2へはSSH接続ですが、~/.ssh/configファイルにSSH接続の設定が済んでいる事を前提にして話を進めます。
なので、このsshコマンドでec2にSSHログインできる状態です(ec2hostは~/.ssh/configで設定したec2のHost名です)
$ ssh ec2host
まず、ec2にSSHログインして、ec2のターミナル上でgit共有リポジトリ用のディレクトリを作成します。
$ mkdir ec2-springbootapp.git
$ cd ec2-springbootapp.git/
$ pwd
/home/ec2-user/ec2-springbootapp.git
ec2-springbootapp.gitというディレクトリを作ったので、そのディレクトリ内でGit共有リポジトリ(bareリポジトリ)を作ります。(--bareオプションを付けて、git initコマンドを実行する。)
$ git init --bare
Initialized empty Git repository in /home/ec2-user/ec2-springbootapp.git/
これでec2側のGit共有リポジトリの準備はできたので、自分のパソコン側へ戻り、Eclipseで作ったSpring Bootプロジェクトのディレクトリ(Gitリポジトリ管理下のディレクトリ)へ移動します。
$ cd /Applications/Eclipse_2020-06.app/Contents/workspace/springbootapp
[master]$
そして、git remote addコマンドでリモートリポジトリの設定をします。
リモートリポジトリはec2で作った共有リポジトリ(/home/ec2-user/ec2-springbootapp.git)を指定します。
[master]$ git remote add origin ssh://ec2-user@ec2host/home/ec2-user/ec2-springbootapp.git
originはリモートリポジトリに付けた任意の名前、ec2-userはec2のSSHログインユーザ名、ec2hostはec2に付けた任意のホスト名です(~/.ssh/configファイルで設定したHost名)。
リモートリポジトリの設定は、git config -lコマンドやgit remote -vコマンドで確認できます。
[master]$ git config -l | grep remote
remote.origin.url=ssh://ec2-user@ec2host/home/ec2-user/ec2-springbootapp.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
リモートリポジトリの設定ができたので、リモートリポジトリ(ec2の共有リポジトリ)に初めてのpushをします。
[master]$ git push origin master
Enumerating objects: 25, done.
Counting objects: 100% (25/25), done.
Delta compression using up to 8 threads
Compressing objects: 100% (17/17), done.
Writing objects: 100% (25/25), 59.24 KiB | 7.40 MiB/s, done.
Total 25 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://ec2host/home/ec2-user/ec2-springbootapp.git
* [new branch] master -> master
プッシュできました!これでec2の共有リポジトリ上でSpring Bootプロジェクトのソースファイルの管理が始まりました。
今度はgit cloneでec2の共有リポジトリからソースファイルを取得してみます。
適当なディレクトリへ移動してgit cloneコマンドを実行します(ec2の共有リポジトリから取得したソースファイルを、springbootapp2ディレクトリを新規作成してそこに保存する)。
$ git clone ssh://ec2-user@ec2host/home/ec2-user/ec2-springbootapp.git springbootapp2
Cloning into 'springbootapp2'...
remote: Enumerating objects: 25, done.
remote: Counting objects: 100% (25/25), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 25 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (25/25), 59.24 KiB | 5.38 MiB/s, done.
git cloneもできました。保存したspringbootapp2ディレクトリ内を確認します。
$ cd springbootapp2/
[master]$ git log --oneline
0e5d56b (HEAD -> master, origin/master, origin/HEAD) EclipseのSpring Bootプロジェクトをgitで管理。初めてのコミット。
[master]$ ls
mvnw mvnw.cmd pom.xml src
springbootapp2 [master]$ ls -a
. .. .git .gitignore .mvn mvnw mvnw.cmd pom.xml src
ちゃんとSpring Bootプロジェクトのソースファイルを取得できているし、git logでコミットログも確認できました。
これでやりたい事ができました!
ここではリモート環境の例としてAWSのec2上にGit共有リポジトリを作りましたが、SSH接続ができてgitコマンドを使えるサーバ環境であれば、どこでもGit共有リポジトリを作る事ができると思います。
別ページでさくらのレンタルサーバとVagrantのLinux仮想マシン上にGit共有リポジトリを作る手順を書いているので、良ければそちらも参考にしてください。
ec2、さくらのレンタルサーバ、vagrant上にgit共有リポジトリを作る