Git常用命令メモ

3742 ワード

最近仕事でGitの使い方を勉強したので、ここでメモを取って忘れさせていただきました.
ユーザー情報の設定
$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]

エディタのデフォルトvi、変更するには
$ git config --global core.editor emacs

差異分析ツールの変更
$ git config --global merge.tool vimdiff

既存の構成情報の確認
$ git config --list

共通コマンド
既存のプロジェクトのGit管理を開始するには、このプロジェクトが存在するディレクトリに対して次のように実行します.
$ git init

現在のディレクトリの下にいくつかのファイルがバージョン管理に組み込まれている場合は、git addコマンドを使用してGitにこれらのファイルの追跡を開始し、コミットする必要があります.
$ git add *.c
$ git add README
$ git commit -m 'initial project version'

クローンを作成するときに、新規作成するプロジェクトディレクトリ名を自分で定義する場合は、上のコマンドで最後に指定します.
$ git clone git://github.com/schacon/grit.git mygrit

Gitは多くのデータ転送プロトコルをサポートする.前の例ではgit://プロトコルを使用していましたが、あなたも使えます.
http(s):またはuser@server:/path.gitが示すSSH転送プロトコル.
ステータスの表示
$ git status

一般的に、Gitの管理に組み込まなくても、追跡されていないファイルのリストに常に表示されることを望んでいないファイルもあります.通常は、ログやコンパイル中に作成されるなど、自動的に生成されるファイルです.名前を作成できます.gitignoreのファイルで、無視するファイルモードをリストし、簡単な例を見てみましょう.
$ cat .gitignore
*.[oa]
*~

最初の行はGitにすべてを無視するように言った.oまたは.a末尾のファイル.一般的に、このようなオブジェクトファイルとアーカイブファイルはコンパイル中に現れ、バージョンを追跡する必要はありません.2行目はGitに波符(~)で終わるすべてのファイルを無視し、多くのテキスト編集ソフトウェア(例えばEmacs)がこのようなファイル名でコピーを保存していることを示します.また、log、tmp、pidディレクトリ、自動生成ドキュメントなどを無視する必要があります.育成は最初から設定しておきます.gitignoreファイルの習慣は、将来このような無駄なファイルを誤って提出しないようにします.
ファイルgitignoreのフォーマット仕様は、•すべての空白行またはコメント記号#で始まる行がGitに無視されます.•標準的なglobモードマッチングを使用できます.•マッチングモードは、最後にスラッシュ(/)に無視するディレクトリを示します.
•指定したモード以外のファイルやディレクトリを無視するには、モードの前に驚嘆符(!)を付けることができます.反逆をとる
globモードとはshellで使用される簡略化された正規表現を指す.アスタリスク(*)は、0文字以上の任意の文字に一致します.[abc]四角カッコ内の任意の列の文字を一致させる(この例では、aを一致させるか、bを一致させるか、cを一致させるか).疑問符(?)任意の文字が1つしか一致しません.括弧で2文字を短い線で区切った場合、この2文字の範囲内のすべてが一致することを示します(たとえば、[0-9]は0から9までのすべての数字に一致することを示します).もう一つ見てみましょう.gitignoreファイルの例:
#   –   Git  
*.a #   .a  
!lib.a #   lib.a  
/TODO #   TODO  ,  subdir/TODO
build/ #   build/  
doc/*.txt #   doc/notes.txt   doc/server/arch.txt

提出時にgit commitに-aオプションを加えると、Gitは自動的に追跡したすべてのファイルを一時保存して提出し、git addステップをスキップします
コミット履歴をレビューするにはgit logコマンドを使用します.
$ git log

共通-pオプションの展開では、コミットされるたびにコンテンツの違いが表示され、-2では最近の2回の更新のみが表示されます.
$ git log –p -2​

-stat、簡単な改行数統計のみを表示します.
$ git log --stat

いくつかのファイルが追加されていないか、送信された情報が間違っていることに気づいたことがあります.先ほどのコミット操作を元に戻すには、-amendオプションを使用して再コミットします.
$ git commit --amend

このコマンドは、現在の一時保存領域スナップショットを使用してコミットされます.先ほどのコミットが変更されていない場合、このコマンドを直接実行すると、コミットの説明を再編集する機会があり、コミットされたファイルのスナップショットは以前と同じです.テキストエディタを起動すると、前回のコミット時の説明が表示され、編集して問題がないことを確認して保存して終了すると、さっきのエラーのコミットを新しいコミット説明で上書きします.さっきコミットしたときに変更を一時保存するのを忘れた場合は、一時保存操作を補完してから–amendコミットを実行します.
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

上記の3つのコマンドは最終的に1つのコミットを得て、2つ目のコミットコマンドは1つ目のコミット内容を修正しました.
$ git rebase --onto master server client

これは基本的に「clientブランチを検出し、clientブランチとserverブランチの共通の祖先を見つけた後の変化をmasterで繰り返します」ということに等しいので、masterブランチに早送りできます.
$ git checkout master
$ git merge client

git rebase[メインブランチ][プロパティブランチ]コマンドは、プロパティブランチserverをチェックアウトしてから、メインブランチmasterで繰り返します.
$ git rebase master server

次にserverの進捗状況をmasterに適用し、メインブランチmasterに進みます.
$ git checkout master
$ git merge server

公共倉庫にプッシュされた更新を決して誘導しないでください.回折をプッシュする前に提出履歴を整理する手段とし、永遠に公開されないcommitだけを回折すれば、何の問題もありません.
参考資料:
『Pro Git』はとても良いGit入門教程です