Home New Help Edit

Git memo

2011-05-28
Suns & Moon Laboratory
Gitを使ってみようかと思う。
Windows + MsysGit + TortoiseGit


ワークフロー

  1. masterで作業しない。かならずブランチを作成して作業する。←という事みたい。
  2. マージは--no-ffする。そうしないと履歴わからなくなる。←デフォルトで--no-ff出来ないみたい。
リポジトリを作りたい場所で以下のコマンドを打つ
git init --bare sample.git
リポジトリのクローン作成。作成されたフォルダは、.gitが付かない
git clone //servername/sample.git
日常の運用
git fetch 最新版をリモートから取得。pullすればfetch+merge出来るが、いざというとき大変らしい git merge origin/master リモートから取得した最新にマージする。 git checkout -b develop ブランチ作成。この場合はmasterからのブランチになる。 vi hello.c ファイル編集 git add hello.c ここらはTortoiseGitでやっても良い git commit -a -m 'hello -> goodbye' TortoiseGitなら日本語入力とか改行とか楽 git checkout master git merge dev git push

使う(使いそうな)コマンド


基本git statusステータス表示。何すれば良いか教えてくれる。結構便利。
リポジトリgit initリポジトリの作成(カレントディレクトリをリポジトリにする)
リポジトリgit init --bare %reposリポジトリの作成%reposというリポジトリ(フォルダ)を作成する。
リポジトリgit clone %repository%repositoryを複製
この時//machinaname/tmp/repo.git みたいに書くと共有リポジトリを指定可能。
リポジトリgit clone --bare %repository %directory共有用リポジトリを作成。%repositoryを%direcotoryへ複製
--bareを付けないと共有出来ない
ブランチgit checkout -b %branch%branchを作成して切り替え
この時ローカルのファイルは変更されない★この挙動がポイント
ブランチgit checkout %branch%branchへ切り替え
ブランチgit checkout %tagname%タグへ切り替え
★この時'detached HEAD'状態になり、全てのブランチから独立した状態になる。
'git checkout -b newbranch'でブランチを作り、後でマージする。
ブランチgit branch -d %branch%branchを削除する
ステージgit add %fileステージに追加
ステージgit rm --cached %fileステージから削除
ステージgit rm %fileファイルを削除し、削除情報をステージに追加
マージgit merge --no-ff %branch%branchをHEADへマージする
--no-ffを付けないと後でマージの追跡が出来なくなるので★必ず★付ける。
リモートリポジトリgit push
リモートリポジトリgit fetch
リモートリポジトリgit merge
リモートリポジトリgit pull %remote %branch
git pull origin %branch
リモートリポジトリをアップデートする。originはclone時自動で付くらしい
%branch省略するとmasterになる?のか?
リモートリポジトリgit remote -vリモートの詳細
リセットgit reset --hard HEAD変更を全て破棄してチェックアウトした状態に戻す
git reset についてもまとめてみる - murankの日記
コミットgit commit -aエディタが起動して、コミットメッセージを編集出来る
コミットgit commit -a -m 'message'コミットメッセージを指定してコミット
コミットまとめgit log --oneline --decorateコミットログを表示
コミットまとめgit rebase -i HEAD~2HEAD含めて2個のコミットをまとめる。
この後表示されるエディタで削除したいメッセージをfにする。
タグgit tagタグ一覧
タグgit tag -a %tagname -m '%tagtext'今のコミットに対してタグをつける
掃除git clean -fX -dignoreファイルのみ削除。フォルダも削除。
掃除git clean -fx -dトラッキングしているファイル以外全て削除。フォルダも削除。

ブックマーク(最近)

サルでもわかるGit入門

Git初心者が見るべきサイトまとめ

git resetについてまとめてみる

A successful Git branching model を翻訳しました
http://keijinsonyaban.blogspot.jp/2010/10/successful-git-branching-model.html

http://d.hatena.ne.jp/sasaplus1/20120520/1337490325

ヽ( ・∀・)ノくまくまー Rails勉強会@東京第33回
上記から引用
Gitコマンドの機能比較
操作 clone pull fetch init checkout
ダウンロード
展開
ディレクトリ作成

Gitとアーカイブモデルの対比
操作 Git(初心者) Git(中級者) アーカイブファイル
ディレクトリ作成 git clone... git init mkdir arc
ダウンロード git fetch wget -O arc/xxx.tar.gz http://...
展開 git checkout tar zxvf arc/xxx.tar.gz
引用ここまで

git remote add origin %repositoryリモートリポジトリに名前を付ける。この場合はorigin

アリスとボブのサーバー、git pushをちゃんと理解したい!

アリスがチャレンジなコードを書く時、git branchをちゃんと理解したい!

tagの使い方
http://d.hatena.ne.jp/kanonji/20110304/1299211488

目次

勉強

Pro Git 一番わかりやすいと思う
A Visual Git Reference Gitでわかりづらい所を可視化して説明。わかりやすい。
Learn.GitHub - Rebasing これも可視化
Gitを使いこなすための20のコマンド
Git Reference リファレンス。これもわかりやすい。
Git と GitHub を体験しながら身につける勉強会行ってきた
【翻訳】Gitをボトムアップから理解する むずかしー
私の使うGitコマンドまとめ

日本語問題

Release 1.7.9.0 Released: 2012-05-05 からUTF-8対応したようです。
http://code.google.com/p/tortoisegit/wiki/ReleaseNotes#Release_1.7.9.0

2012-02-11 msysGit(Git for Windows)がいよいよ公式に UTF-8 をサポート!

Cygwinで日本語問題を回避
SubversionからGitへ移行しようとして日本語ファイル名に困ったことある方に

イメージ図

こんな風?

Pro Git 日本語版「図1-6. 作業ディレクトリ、ステージング・エリア、Gitディレクトリ」
http://progit.org/book/ja/ch1-3.html
を参考にしました。

A Visual Git Reference そうそう、こういう図が欲しかった。

便利な.gitignore

リポジトリに入れたくないファイルを書いておく。

Git Guiを使う

コマンドラインも良いけど、GUIもね。
「コミット予定に入っていない項目」からファイル選択。「コミット」→「コミット予定する(Ctrl+T)」

msysgitをコマンドラインで使う


git statusすれば、コマンドの例が出てくるのでとりあえずgit statusして、そのメッセージを見るのも有効。

一番最初

git init

現状の確認

git status

ステージ

ステージに追加

git add *.c

ステージから削除

addの取り消し
git rm --cached hello.c

ファイルの削除

ディスク上からファイルを削除し、ファイルの削除をステージング
git rm hello.c

コミット

通常のコミット

インストール直後は文句いわれるかも。その時は指示に従って設定をする。
git commit -m 'initial project version'
-mコマンドラインでコミットメッセージ指定

自動ステージングコミット

git commit -a -m 'added new file'
-aトラッキングしているファイルを自動でステージ(add)する。

コミットをまとめる


最初こんな風だとする。
$ git log --oneline --decorate 28247f5 (HEAD, master) mata wasureta 78a0314 wasureta 399216f initial import
2個まとめる。
git rebase -i HEAD~2
エディタが起動し、こんな風に表示されたりする。
pick 78a0314 wasureta pick 28247f5 mata wasureta
まとめ方その1(squash)
こうして保存・終了すると、エディタが開いてコミットメッセージ編集出来る
pick 78a0314 wasureta s 28247f5 mata wasureta
まとめ方その2(fixup)
こうして保存・終了すると、コミットメッセージはpickのメッセージになる。(エディタ起動しない)
pick 78a0314 wasureta f 28247f5 mata wasureta
fixupした後のログ
$ git log --decorate --oneline e285904 (HEAD, master) wasureta 399216f initial import
3個まとめる。
git rebase -i HEAD~3
こうすると、こんなかんじにエディタ表示されるので
pick xx pick xx pick xx
下の2個をsにして保存終了。
pick xx s xx s xx
もう一回エディタが表示されるので、そこでまとめたコミットログを書く。

失敗した時

git rebase --abort

タグ


タグ一覧

git tag

タグ付け

git tag -a rev1 -m 'revision 1'

状態確認

コミット後はこんな感じ
$ git status # On branch master nothing to commit (working directory clean)

ログ

git log git log --oneline --decorate
--oneline一行表示
--decorateこれを付けないとタグ表示しない...

分岐

ブランチの作成と切り替え

branchはブランチの作成
checkoutはブランチの切り替え(HEADの移動をする)

git checkout -b testing
↑はこれと同等
git branch testing git checkout testing

ブランチ切り替え

git branch testing

ブランチの削除

git branch -d testing

取り消し


ワーキングツリーの変更取り消し

git checkout -- <file>

ログの変更

git commit --amend

共有リポジトリ


cloneする際'--bare'して、xyz.gitという風にしとかないとpush出来ないっぽい。
pullは出来る。
アリスとボブのサーバー、git pushをちゃんと理解したい!

共有リポジトリの作成
git clone --bare /c/data/testproject /c/shared/repos/project.git
共有リポジトリを複製
git clone /c/shared/repos/project.git

push

pushできない
pushしようと思ったらこんな感じのメッセージが!
receive.denyCurrentBranch
git pushできない - 橋本詳解

clone元でこうする。
git config --add receive.denyCurrentBranch ignore

リポジトリをまとめる

testというリポジトリが、手元と別のマシン上にある場合
cd test git remote add repo2 //server/folder/test git fetch repo2 git merge repo2/master
Git で複数のリポジトリをまとめたり、逆に切り出したりする

インストール


2012-06-05インストール


TortoiseGIT + msysgitの組み合わせ。
ついでにTortoiseSVNも入れときました。

Windows7 64bit
  1. TortoiseSVN-1.7.7.22907-x64-svn-1.7.5.msi
  2. msysgit(Git for Windows) Git-1.7.10-preview20120409.msi
  3. TortoiseGit TortoiseGit-1.7.10.0-64bit.msi

WindowsXP 32bit
  1. TortoiseSVN-1.7.7.22907-win32-svn-1.7.5.msi
  2. msysgit(Git for Windows) Git-1.7.10-preview20120409.msi
  3. TortoiseGit TortoiseGit-1.7.10.0-32bit.msi

msysgitは、GUIとBASH入れたほうが良い。便利です。
コミットはas-isにしました。Windowsだからと言ってCR,LFのみとは限らないので。

エディタの設定
git config --global core.editor "'C:/tools/bin/k2e/K2Editor.exe' //on"
エディタ設定で起動時にUTF-8N(BOM)無しにしている。
BOMが付くと、以下みたいなメッセージになる。
<U+FEFF>日本語メッセージテスト
ユーザーの設定
git config --global user.email "you@example.com" git config --global user.name "Your Name"

インストールGitのUTF-8対応以前

WindowsXP
Git/一人で使ってみる(msysgit編) こちらを参考にしつつ。
nkf,lessを導入してから、profileに以下を追記。nkfに-W付けないと表示出来なかった。
export GIT_PAGER="nkf -W -s | less"

サーバー

参考 http://thinking-megane.blogspot.jp/2012/07/windowsgit.html
参考 http://d.hatena.ne.jp/madknight+Veritas/20121106

リポジトリを作成
md C:\Git\repos\sample.git cd C:\Git\repos\sample.git git init --bare
もしくは、こうするとsample.gitフォルダを作りつつ、リポジトリを作ってくれる。
git init --bare sample.git
こんな感じでバッチファイル作成
"C:\Program Files (x86)\Git\cmd\git.cmd" daemon --verbose --export-all --enable=receive-pack --base-path=C:/Git/repos
リモートからはこんな感じで
git ls-remote git://サーバ名/sample.git

Mac OSXにインストール

http://code.google.com/p/git-osx-installer ここからダウンロード
今回は「git-1.8.3.2-intel-universal-snow-leopard.dmg」をダウンロード
開くと、pkgが有るので、それを開くとGUIインストーラが起動するので、それでインストール。

http://tukaikta.blog135.fc2.com/blog-entry-206.html

launchctl load com.git-run-daemon-run.plist launchctl list | grep git launchctl unload com.git-run-daemon-run.plist
で、結局サーバー動作うまくいかなかったので、やめた...orz

Home New Help Edit
2014-02-23 16:24:05 32400