EclipseでのGit

プロジェクト管理

Gitとは?

Gitはファイルの履歴を保管するシステム(バージョン管理システム)。言わば、ファイルのセーブポイントを作り、いつでもそこを参照したり、元に戻したりすることが出来る。

また、サーバ上にその履歴をアップロードし共有できる。

用語

リポジトリファイル履歴の保管場所。プロジェクト毎に作る。
ローカルリポジトリ自分のPCに作ったリポジトリ。
リモートリポジトリGitサーバに作ったリポジトリ。
コミットファイルをローカルリポジトリに反映
プッシュローカルリポジトリをリモートリポジトリに反映
プルリモートリポジトリをローカルリポジトリに反映

最初の設定

  1. Gitサーバにリポジトリを作る(リモートリポジトリ)。
  2. Eclipseでプロジェクトのリポジトリを作る(ローカルリポジトリ)
  3. 最初のコミット、プッシュを行う。
  4. 更新時(課題提出時)にはEclipseからコミット、プッシュを行う。
  5. ※グループ開発時、他の人の更新を反映するにはプル。

準備・アカウント作成

Gitサーバにアカウント作成

Gitサーバ

  1. Gitサーバにアクセスし、Sign in 画面の下部にある Create new account をクリック
  2. Usernameにアルファベットで名前を入力(例:kohara)
  3. Passwordにパスワードを入力
  4. Full Nameに名前(姓のみ)を漢字で入力(例:古原)
  5. Mail Addresssは必須だが使用しないので、適当な(本物ではない)アドレスを入力(例:kohara@example.com)
  6. 後は入力不要。下部の緑のCreate acountを押しアカウントを作成
  7. UsernameとPasswordを入力しログインする

コミット・プッシュ

Gitサーバにリポジトリの作成

Gitサーバにログインした状態で自分のリポジトリを作成する。右上の+ボタンを押し、New Repositoryを選択。

「Repository name」にプロジェクト名(例:Lesson)を入力。「Create repository」で作成。
作成後の画面でURI(最後が.gitのアドレス)をコピーしておく(via HTTPを右クリックし[リンクのアドレスをコピー])。

Eclipseプロジェクトでの準備

ローカルリポジトリの作成

  1. プロジェクト名(例:Lesson)を右クリックし、[チーム]-[プロジェクトの共用]からGitを選択し、次へ。
  2. 「プロジェクトの親フォルダ内のリポジトリを使用または作成」をチェックし、一覧に1つだけあるプロジェクトを選択し、下の「リポジトリの作成」ボタンを押し、「完了」を押す。これでローカルのリポジトリが出来る。

最初のpush


  1. 「Gitステージング」の画面を表示(もしくはプロジェクトを右クリックし、[チーム]-[コミット])
  2. 「ステージされていない変更」の++ボタンを押し、全ファイルを「ステージされた変更」に移す
  3. 「コミットメッセージ」を入力。例:最初のコミット
  4. 「コミット」を押す。その後、「HEADのプッシュ」を押す。
  5. URIにGitBucketサーバのURIを入れる(URIをコピーしていれば自動的に入っている)。認証にGitBucketサーバのユーザ名、パスワードを入れる。「セキュアストアに保管」をチェックすると認証情報が記録される。

  6. 次へを押していき完了まで押す。ログイン画面が出たときにはGitBucketサーバのユーザ名、パスワードを入れる(セキュアストアに保管をチェックするとその後は不要)。
  7. プッシュ結果が出るので「閉じる」を押す。これでサーバに反映されている。

普段のコミット、プッシュ

  1. 「Gitステージング」の画面を表示(もしくはプロジェクトを右クリックし、[チーム]-[コミット])
  2. 「ステージされていない変更」の++ボタンを押し、全ファイルを「ステージされた変更」に移す
  3. 「コミットメッセージ」を入力。例:演習1提出
  4. 「コミットおよびプッシュ」を押す

グループ演習時

他の人の更新を反映

まず、自分のファイルに変更がある場合には(プッシュでは無く)コミットすること。

そして、プロジェクトを右クリックし、[チーム]-[プル]を行い、自分のファイルを最新に更新する。
その後、自分の更新を反映するためにプッシュを行う。

プッシュ失敗時


プッシュ時、結果に「拒否」あるいは「reject」と出た場合にはプッシュに失敗している。
このような場合、他のユーザがサーバのデータを更新しているので、プルを行い、ローカルを最新に更新した後に、プッシュを行いサーバを更新する。

コンフリクト発生時


プルを行ったあとで、このような表示が出た場合にはお互いに同じ場所を編集してコンフリクト(編集の競合)が発生している。
この場合、両方の編集結果が反映されているので手動で片方だけに修正する(他の更新者と話し合うこと)。
その後、通常通りプッシュする。
(プッシュできない場合、競合修正したファイルを右クリックして、[チーム]-[索引に追加]を行う)

プルできないとき


[チーム]-[プル]を行ったときに、このような表示が出た場合、プルする前に自分のファイルの「コミット」を行っていない。
この場合、まず「コミット」してから「プル」する。
このとき、競合が起きていたら上記のように修正する。
その後、「HEADのプッシュ」を行いサーバを更新する。

また、プルを行ったときにマージに失敗し「DIRTY_WORKTREE」という表記が出ているときには、対象ファイル(グレーのファイル)を削除してプルを行う。