White Box技術部

WEB開発のあれこれ(と何か)

EclipseでGitHubとかGitBucketを使い始める方法

お疲れ様です。

使い方の記事が続いてしまって面白味がないかもですが、EclipseからGitHubを使おうとしたとき結構詰まったので、今日はその話をまとめようと思います。

といっても本稿でターゲットにするのはGitBucketです。どちらもEclipseから見たら(1点除いて)同じなので、やり方としては問題ないはずですが、Webサービス上の画面操作は違うのでGitHubを使う場合は・・・「よろしくお願いします!」

また、詰まった点は後ろの方に載せておきます。
手順通りにやれば問題は起きないはずですが、もし詰まったときにでも参考にしてもらえればと。
(↑気力が尽きたのでまた今度追記しておきます)

#今回は画像が多いので、続きのリンクから始まります


何はともあれ共有リポジトリを作ろう

GitBucketにログインすると以下のような画面になります。
右上の緑色のボタン、「New repository」からリポジトリ作成画面へ遷移して下さい。

f:id:seri_wb:20140316191148p:plain

ちなみに本題からは外れますが、GitBucketを起動するTomcatのJavaバージョンを
環境変数以外で指定したい場合は、「catalina.bat」の16行目付近に
set JAVA_HOME="C:\Program Files\Java\jdk1.7.0_51"
のように追記するとそのバージョンのJavaで起動するようになります。

遷移すると以下のように表示されるので、必要な情報を入力してください。

  • 初期画面

f:id:seri_wb:20140316192047p:plain

  • 入力後

f:id:seri_wb:20140316192216p:plain

「Greate repository」ボタンを押下するとリポジトリが作成され、リポジトリの状態が表示される画面に遷移します。

f:id:seri_wb:20140316192349p:plain

これで作成は終了です。

ローカルリポジトリは存在する?

ローカルリポジトリが存在しないのであれば、先ほどの共有リポジトリをcloneしておしまいですが、 「共有リポジトリを作ろうかな」という場合、元にしたいローカルリポジトリが既にあることの方が多い気がします。

そこで本稿では『ローカルリポジトリをベースに共有リポジトリを変更する方法』の説明をしようと思います。

gitコマンドから共有リポジトリを作るのであれば、git cloneに--bareオプションをつければお終いですが、GitBucketのようなWebサービスを利用する場合は、Webサービス上で共有リポジトリを作ってからPushする必要があります。(ですよね?)

共有リポジトリは先ほど作ったので、順序は逆ですが、次は存在している想定のローカルリポジトリを作成していきます。

Eclipseでローカルリポジトリを作成

f:id:seri_wb:20140316195011p:plain

Gitで管理するプロジェクトの右クリックメニューから「チーム > プロジェクトの共用」を選択します。

f:id:seri_wb:20140316195017p:plain

リポジトリーのタイプをGitとし、リポジトリーを作成します。

  • 初期画面

f:id:seri_wb:20140316195020p:plain

f:id:seri_wb:20140316195024p:plain

  • 完了ボタン押下前

f:id:seri_wb:20140316195031p:plain

ローカルリポジトリにコミット

これでプロジェクトがGitのローカルリポジトリで管理されるようになったので、 今度はそこにファイルをコミットします。

f:id:seri_wb:20140316200129p:plain

  • コミット

f:id:seri_wb:20140316200732p:plain

コメントは

  • 1行目に概要
  • 2行目空行
  • 3行目以降に詳細

としてください。

gitではフォルダ配下にファイルがない場合、フォルダだけをコミットすることができません。
それの対処として、ちょっと置き場をミスったため、今回は意味を成してませんが、
「.gitkeep」という空ファイルをフォルダ配下に置いておく、という対処方法があります。
ビルドパスとして設定しているけどまだファイルがない場合などの対処にご利用ください。

コミットすると、NO-HEADからmasterに代わってますね。

f:id:seri_wb:20140316200736p:plain

共有リポジトリにPush

お待たせしました。いよいよGitBucketにPushです。
今回はローカルリポジトリの内容で共有リポジトリを上書いてしまいます。

プロジェクトの右クリックメニューから「チーム > リモート> プッシュ」を選択します。

f:id:seri_wb:20140316205141p:plain

そうすると以下のような画面が出てくるので、GitBucketのリポジトリページに表示されていたURLをコピーしてきて貼り付けます。

f:id:seri_wb:20140316210048p:plain f:id:seri_wb:20140316210233p:plain

必要な情報を入力したら、次はPush元、Push先を指定します。 ここを間違えてHEADにすると全て台無しになるようなので注意してください。

f:id:seri_wb:20140316210259p:plain f:id:seri_wb:20140316210303p:plain f:id:seri_wb:20140316210307p:plain

最後に更新の強制にチェックして、次の画面で結果を確認しつつ完了ボタンを押下すれば、Push終了です。

f:id:seri_wb:20140316210612p:plain

GitBucketの画面を更新すると、ファイルが追加されているのが確認できると思います。

f:id:seri_wb:20140316210721p:plain

共有リポジトリからPull

実はこの状態ではまた共有リポジトリからのPullができません。
できるようにするために、branch.master.mergeの設定とPushとFetchの設定をします。

ここからは「Git リポジトリーエクスプローラー」パースペクティブで作業をします。

※ここら辺の手順はいまいち自信がないのですが(不要なことやってるかもしれません)、とりあえず以下でできるようにはなります。

Pushの設定

対象リポジトリの「リモート」で「右クリック > リモートの作成」を選択します。

f:id:seri_wb:20140316211949p:plain

  • プッシュ構成を選択

f:id:seri_wb:20140316212053p:plain

  • 変更ボタンから上記Push設定と同じように値を設定する

f:id:seri_wb:20140316212112p:plain f:id:seri_wb:20140316212253p:plain

  • Ref mappingsを設定して保管する

f:id:seri_wb:20140316212423p:plain f:id:seri_wb:20140316212426p:plain f:id:seri_wb:20140316212430p:plain

以上でPush設定が終わりです。

Fetchの設定

orgin配下の緑色の←がついたリポジトリ情報を右クリックし、フェッチの構成を選択します。

f:id:seri_wb:20140316212859p:plain

これも「共有リポジトリにPush」で設定したのと同じように設定します。
ただし、更新の強制にはチェックをつけないでください。

f:id:seri_wb:20140316212913p:plain

以上でFetch設定が終わりです。

branch.master.mergeの設定

最後にbranch.master.mergeを設定します。
と言ってもbranch.master.mergeの他にも2つ設定します。

ではリポジトリのプロパティを表示して、以下のプロパティ値を追加していきます。

f:id:seri_wb:20140316213458p:plain

  • branch.master.remote

f:id:seri_wb:20140316213615p:plain

  • branch.master.merge

f:id:seri_wb:20140316213652p:plain

  • branch.master.rebase
    rebaseはプロジェクトの方針に従ってください。個人的にはtrueでいいと思います。

f:id:seri_wb:20140316213752p:plain

以下のようになっていればOKです。

f:id:seri_wb:20140316213840p:plain

Let's Enjoy Social Coding!

長くなりましたがこれでPullもFetchもPushもできるようになっているはずです。
お疲れ様でした。

つ、疲れた・・・

ちなみに共有リポジトリからクローンしてプロジェクトを作成する場合は、いろんな設定が勝手にされるのでだいぶ楽です。
そこら辺はまた今度書こうと思います。

それではまた。