Gitメモ

最初に

リポジトリはリモートとローカルがある。通常、ローカルでの作業。
ローカルで変更を保存するのがインデックス→コミット。
リモートへはプッシュ、プル。

名称のorigin, masterというのは
origin = レポジトリの別名
master = ブランチの名前
でデフォルトの名称。

git clone https://xxx
で共有リポジトリとの変更履歴も含めたファイルが保存される。

git * , git add xxx で索引に登録
git commit -m “コメント” でコミットする。(この段階では共有リポジトリには保存されていない。)

共有リポジトリにプッシュ
git push 共有リポジトリ名 ブランチ名

共有リポジトリが登録されていない場合、
git remote add origin xxxで登録できる。

現在のローカルと、共有リポジトリに差が生まれる(共有は他からpushされる)
ローカルを最新にするのがgit pull

簡単な使い方

git clone https://github.com/okamurax/vba_to_sqlserver.git
cd vba_to_sqlserver
git add .
git commit -m “first commit”
git push https://github.com/okamurax/vba_to_sqlserver.git master

基本的なコマンド

sudo apt-get install git
インストール

git config –global user.name “okamura”
git config –global user.email “mail@xxx.com”
基本設定

git config –global color.ui true
カラー表示

git config –global alias.co checkout
別名

git config -l
コンフィグ一覧

git init
現在のディレクトリを使う宣言

.git等が作成される。
この.gitと同階層以下が作業ディレクトになる印で、.gitを手動でコピーすることもできる。

git add index.rb
git add . (サブディレクトリ以下を全てaddする)
ステージングへ

git commit
git commit -m “xxx”
ステージから共有リポジトリ

git show xxx(id)
コミットの内容がみれる。

git log
コミットのログを確認できる。(リポジトリのディレクトの中にいないとダメ)

git log –oneline
一行で表示したい

git log –stat
変更ファイルされたファイル

git log -p
変更箇所を表示する

git status
ファイルの状態。

modifiedと表示されると変更されていて、
changes not staged for commit ステージングにもコミットにいないという意味。
changes to be commited とステージングにいてコミットされていない状態。

git checkout — index.rb
コミットしていないファイルを、コミットした情報に戻す。

git diff
ステージングエリアに上がっていないものを比較できる
(ローカルとステージの差分)

git diff –cached
ステージングに上がったあとは –cached
(ステージとコミットの差分)

git rm index.html
で消す

git mv index.html
で移動

vim .gitignore
で対象外を管理できる。
*.log等を書いておくと、対象外とする。
.gitignoreを置いた階層と、以下サブディレクトに有効になる。

git commit –amend
直前のコミットを変更。履歴が増えない。
コミットするファイルは通常通り、addしてcommitする
そのときに、オプションで–amendを付ける
そうすると、直前のコミットのコメントを変更できる。

git reset –hard HEAD
直前のコミットに戻す場合。

git reset –hard HEAD^
直前のコミットの一つ前に戻る

git reset –hard xxxxxxxxxxxxxx
でも戻れる。

git reset –hard ORIG_HEAD
最新の状態から以前のコミットに一度戻して、
やっぱり最新の状態で良かった場合。

git branch
ブランチの一覧取得

git branch hoge
ブランチ作る

git checkout hoge
現在のブランチへ移動する。
ファイルの変更、追加などブランチごとの状態が維持される。

git checkout -b hoge
新しいブランチを作成しつつそのブランチ移動。

git merge hoge
ブランチの変更を取り込む。
hogeでの変更がよかったので、現在のブランチに取り込む。
コミット履歴も結合される。

git branch -d hoge
ブランチ消す

git tag
タグの一覧

git tag xxx
これで直近のコミットにxxxというタグがつく。

git tag yyy xxxx
これでxxxというidのコミットにyyyというタグがつく。

git tag -d xxx
タグを消す。

共有リポジトリもローカルと同じで、
***.git のようなディレクトリを作成するし、そのディレクトの中で、
git init –bare
を実施する。
bareオプションを付けると、
そのディレクトリではファイルの作成、変更等しないという意味。

git remote add origin xxx.git
(共有リポジトリの場所)

別のリポジトリを登録
作業ディレクトにしたい場所で実行する。
そのディレクトリではまずgit initされていないとダメ。
(cloneは大丈夫なので注意)

URLに”origin”という短縮名(ニックネーム)を付けると考えればOK。

空のディレクトリでgit initして、remote addしても特にファイルはコピーされない。
(cloneはコピーされる)

git initしただけのディレクトはブランチがない。
最初のコミットでブランチができる。

git remote rm origin
登録した共有リポジトリを削除

git push ox master
作業ディレクトリの内容を共有リポジトリへ登録。
oxという共有リポジトリに向かってmasterブランチを登録する。

push:アップロード
ox:リモートのサーバ名の短縮名(直接URLでもOK)
master:ブランチ名

masterの部分は正確にはmaster:masterとなる。
(ローカルのmasterをリモートのmasterに反映)

git clone xxx.git
共有リポジトリからコピー

git pull origin master
共有から持って来てローカルでマージされる。
マージなので、共有リポジトリとローカルでの変更箇所が一緒だと、コンフリクトする。

リモートrepの作り方。ローカルの場合。

Ubuntu側でSambaで共有しているフォルダで
git init –bare –shared
をする。

–sharedしてもダメでSambaのフォルダなので、
sudo chown -R nobody:nogroup フォルダ名
を実行する。

既にリモートrepにファイルがある場合、
チームエクスプローラ > 接続管理 > 複製
から、リモートrepの場所とローカルrepの場所を指定。

リモートrepもローカルrepも1箇所で複数のソリューションを管理できる。

ローカルで使う場合(Win)

適当なフォルダ(git_remote)で
git init –bare –shared

適当なフォルダで作業