Locked History Actions

git/EGit

EGitの操作

github上のリポジトリを、eclipseのプラグインEGitを使って操作していく。

参考

git参考

EGit参考

リポジトリの作成とpushまで

Spoon-Knifeのローカルリポジトリを作成する

「Git Repository Exploring」パースペクティブを開き、上のボタンのうちの「Clone a git Repository and ...」をクリック。

このパースペクティブは、SVN用の「SVN Repository...」と似ているが機能は全く異なる。SVNの場合には、基本的に「リポジトリの場所」を登録しておき、そのツリー中の任意の場所をいくつでもプロジェクトとしてチェックアウトできるものだった。 しかし、Gitでは「(リモートリポジトリの)登録だけ」ということはできず、必ずそのクローンが伴い、このパースペクティブに登録されるものは、クローンされてローカルに生成したリポジトリになる。他のボタンは、既にあるローカルリポジトリを登録するか、新規にローカルリポジトリを作成するかで、要するにここで「リポジトリ」と言っているのは必ず「ローカル」ということ。ここがSVNとは根本的に異なる。

LocationのURIに「https://github.com/ysugimura/Spoon-Knife.git」と入力する。ブラウザ上では「https://github.com/ysugimura/Spoon-Knife」だが、ここでの入力はお尻に「.git」をつける。他は一切入力しなくて構わないので、Nextをクリック、ブランチはmasterしかないのでそれを選択、ローカルリポジトリの場所を聞かれるが、デフォルトが「~/git/Spoon-Knife」になっているのでそのままFinish。

プロジェクトの作成

この状態でも、ブランチの作成やらファイルの編集やらはできるが、当然面倒。 リポジトリを登録した後で、プロジェクトを作成しなければならない。ここはSVNと同じ。

だが、SVNと決定的に異なるのは以下の点。

  • SVNを使った場合には、workspaceの中にプロジェクトディレクトリを作成するのが普通。つまり、workspace内に作成するディレクトリ名がすなわちプロジェクト名となり、そのディレクトリ内に作業用コピーとしてリポジトリからチェックアウトしたものを置き、そこで作業する。
  • Gitの場合には、workspaceの中に作成するのはプロジェクト情報のみで(と思われる)、プロジェクトそのものは先のローカルリポジトリに作成してしまう。つまり、実際の作業場所はworkspaceとは別の場所になる。

Gitの場合、「自分のマシンのローカルリポジトリの内容を別の場所にチェックアウトし、そこで作業を行い、その内容をローカルリポジトリに書きこむ」といったことは行わない(ようだ。やろうと思えばできるとは思うが)。ローカルリポジトリにあるファイルを直接編集する。したがって、eclipseのworkspaceがどこにあろうと、プロジェクトは先に作成したローカルリポジトリの中に作成することになる。

「Git Repository Exploring」パースペクティブからEclipseのプロジェクトを作成する場合、以下のいずれかの場所で右クリックして「Import Projects」を選択する。

  • ローカルリポジトリそのもの
  • Working Directoryか、あるいはその下にある任意のディレクトリ

このメニューの「Import Projects」という名前の通り、選択した場所にeclipseのプロジェクト定義ファイル(.projectなど)があれば、そのままeclipseのプロジェクトとしてインポートを行うことができるが、それが無い場合には、いったんGeneral Projectを作成してそれを所望のプロジェクトに変更する(マニュアルには、Use The New Projects Wizardを使ってもできるような記述があるが、これはうまくいかない)。他の方法は現在のところみつからず。

  • ローカルリポジトリ中の先にあげたいずれかの場所を右クリックし、「Import Projects」を選択、General Projectとしてインポートする。
  • Eclipseをいったん終了させる。
  • 先に選択したローカルリポジトリ中に.projectファイルがあるので、これを編集する。例えばScalaプロジェクトにするには、

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>project-name</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>org.scala-ide.sdt.core.scalabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.scala-ide.sdt.core.scalanature</nature>
                <nature>org.eclipse.jdt.core.javanature</nature>
        </natures>
</projectDescription>

などというように変更する。.classpathは作成しなくとも自動的に作成される。

  • eclipseを再起動してプロジェクトを見ると、Scalaプロジェクトになっている。

※ちなみに、Eclipse Scala IDE特有のものなのか、「.cache」という大きなファイルが勝手に作成されるため、これを.gitignoreしておく必要がある。

編集、コミット、push

プロジェクトができたら、READMEを編集し、teamメニューからcommitを選択。 add無しでいきなりコミットができる。

次にteamメニューからpush to upstreamを選択し、github自体にpushする。ブラウザを使ってgithubの状態を見ると、Historyが表示され、ファイル内容が変更されていることが確認できる。