Github: how to upload,download

From Ecal

Revision as of 15:05, 19 June 2011 by Kotani (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

git利用法(小谷)

  • gitの本を読む。
  • gitk(GUI)の利用。
  • emacsのgit modeの利用。

gitの本を読む。

gitはバージョン管理システム」。ネットの上にある情報だけでは、「基本が分からない」ので、混乱する。 gitの本(入門Git 濱野 純(Junio C Hamano)を読むほうがよい。とは、言ってもあまり読めてない。 たとえば、gitのマージの基本である、ファーストフォワードを知ってないと「勝手にマージしてしまう」のが問題になりうる。 数値計算のコードなどでは整合性が失われるかもしれない。


gitk

GUI 基本的には、これでブランチの操作はできる。CUIよりわかりやすい点も多い。とにかく「現状把握」がしやすい git guiで操作して、他のブランチのcommitを、あるコミットのヘッドへ持ってきたりもできる。 gitk --allですべてのブランチができる。 gitでブランチの切り替え(チェックアウト)をしないと,そのブランチのヘッドを移動させる 操作ができない。remoteのブランチをローカルにチェックアウトするには、まずローカルのブランチをつくってそれでチェックアウトしないといけない。

最低限必要なものだけpackするには?

確実な方法は、ディレクトリのみコピーして、git add .してからgit --amendとかも有効. ですが、gitkのFile-start-git guiで、Staged Changesにファイルを移してから、メッセージを書いてコミットするのが 簡単です。あるいはemacsのgit-statusからcommitする。

.gitがおおきくなってこまる

面倒だが以下の原始的な方法で小さくしてる。

  1. いま作業中のソースをクリーンにしてバックアップしておく。
  2. 過去のクリーンなバージョン(.gitのちいさいもの)をbranchでチェックアウトする。 たとえばgit checkout 3ad7c59d8abb1fe0553f3f0f415ad37d7e36b674 -b branchtemp
  3. これを別ディレクトリからpullすると、その過去の時点の小さなgitになる。
  4. この状態でいま作業中のソースをおく(これははじめにバックアップしておいたもの)
  5. この状態で、git add .してから、git commitする。


ブランチよくわからない

つかわなければいい。マージする時には調べる。過去のものをチェックアウトするのにはよい。 gitk --allで行うのを基本にしている。まれに、こける時もある。

githubであるブランチを消す

git pushがremoteにあるものに書き込む唯一の手段。git push origin :brancha でbranchaが消える。

githubへ上書きでの書き込み

fast-forward(以前のものをこわさない書き込み)でない限り、 githubにrejectされる。このときには、git push origin --all --forceで書き込む。


emacsのgit-statusからaddなどしてC-c C-cでコミット

(勘違いしてたので修正)。

新しいemacsではなにもしなくてもgit対応で使いやすかった. .gitの支配下のディレクトリで、

M-x git-status

する。そのあとは、そこからcommitしたりできる(M-x git-commit, git-amend-commit)。差分も見れる。 とにかく赤い色がついたものが新規に追加・修正・削除される「予定項目」となる (そのうえで*マークをつけてからcommitすることになる)。 変更をうけてないものは薄い色でUPDATEと表示。 マークは一括処理するときにもつかえる(マークしてからaをおすとマークしたものがaddされる。一括マークはshift-Mなど、メニューを参照)。 いくつかのファイルがマークされた状態でコミットするとマークしたファイルのみに影響が出る。 ときどき動作が変になるときもある。とくにgit-amend-commitが終了してないのに繰り返すと、前の前までもどってしまう。

コミットのプロセス。 1.git-statusにおけるファイルのスタータス。

Uptodate (.gitのなかのもの=working dirにあるもの)
Deleted  (.gitのなかにある。しかし、working dirにはない)
Modified (.gitのなかにある。しかしworking dirにあるものがちがう。)。
Add      (.gitのなかにない。working dirにある。commit可能)。
Unknown  (.gitのなかにない。working dirにある。commit不可)。

という種別をファイルに対しておこなうこと。 ファイルのスタータスの概念において、AddとUnkownの区別はひとがおこなう(他の場合のステータスは一意的だがAddかUnknownかは人がきめること)。 「質問:Unknown->addにaで変更した後、それを元へもどせない? Why?」

2.次にcommitするファイルにマークしてからcommitする。commitは原則としてworking dirを.gitに取り込む操作。Unknownファイルに対しては、マークしてから、commitしてもaddされるわけでもなく無意味。どうもこのあたりがわかりにくい。emacs-git設計上の問題?

3.git-amend-comitにおいてはgit-status画面で、これをおこなってから1と2をおこなって、C-c C-cすること。git-status画面で1と2をおこなってからgit-amend-comitをしてやるとgit-statusが前回comit時のものが現れる。

git-statusにおいて使ったコマンド

=で差分みれる。
mでマークする。星がつく。マークをもちいると一括処理できる(マークしてから操作add removeなど)。
git-refresh-statusでファイル変更にたいしてstatusもrefreshできる。
git-commit  最終的にマークしたものにたいしてcommitが行われる(UPtoDateについてはマークされてようがされていまいがおなじこと)。
git-ammend-commit   これを行うとき、前回のcommitの状況が再現されるので、これを行った後マークをつけてcommitすること。
emacsのgitモードではキー設定がいろいろあるがGUIのメニューが助かる。

 Removeではほんとにファイルが消される(警告してくれる;3つマークしてからrをおすと3つ消そうとする)

http://yoshimov.com/?page=Git%2FEmacs%A4%AB%A4%E9Git%A4%F2%BB%C8%A4%A6 の最後のところだけ。あとは、emacsのxバージョンのGUIが助けてくれる。


なんかいろんなものをたちあげすぎてたからか。。。確認や、履歴のチェック、ブランチの履歴や切り替え、Masterの切り替えなどはgitkが見やすい (同時に立ち上げてたらrefreshしたりもいる)。emacsのgit modeとgitkをうろうろするのがよい。

githubへアップロード

tkotani/ecalをいったん消す(tkotani/ecalのAdminの一番下。)してからアップロード. いったん消してから、dashboardで空のrepositoryをつくると、git push origin master などのuploadのしかたがしめされるのでそれにしたがう。あらかじめアカウントを作って sshの公開キーを送っておくとかの操作が必要ですこしめんどう。

  • git commit -m 'first commit'

してから、

  • git remote add origin git@github.com:tkotani/ecal.git
  • git push origin master

とする。

  • でもそんなことしなくても、git pushできます。ファーストフォワードでないときは、git push -fします。

githubからダウンロード

git clone git://github.com/tkotani/ecal.git

でとれるとおもいます。 (以前は.gitでとるにはforkしてからでないととれないと思ってたんですが、そんなことはないようです。)

Personal tools