[開発] Git Command - 基礎編

■ とりあえず、local 環境を初期化
  install/open gitbush (≒terminal/command prompt)
  $ cd /c/tmp/gitStudy
  $ git config --global user.name "myusername"
  $ git config --global user.email "myemail@hogehoge.com"
  $ git init
  「C:\tmp\gitStudy」に「.git」という隠しフォルダが出来ている筈
  $ git init --bare = 共有リポジトリとして初期化する
    
    
■ 把握すべき資材保管場所
  ① remote repository / shared repository (上位)
  ② local repository / private repository
  ③ staging area / index
  ④ working copy / working tree (下位)
    
    
■ ブツの取得 (下り) -手始めにサンプルキットを
  $ git clone https://github.com/github/training-kit.git
  ① remote repository から資材が ④ working copy へ複製される
  新たに「C:\tmp\gitStudy\training-kit」というフォルダが作成されている筈
  ※ 共有リポジトリは「ホゲホゲ.git」な名前が通例
    
    
■ 状況確認
  害なし。好きなだけ叩くが良し
  $ git branch
  $ git status
  $ git diff BRANCH_NAME
  $ git show COMMIT_HASH_VALUE or TAG_NAME
  $ git log
  $ git log -l
  $ git diff = b/w working copy and staging area
  $ git diff --cached = b/w staging area and local repository
  $ git diff staged
  $ git config -l
  $ git reflog
    
    
■ 最新資材取得 (下り)
  [local repository]  <-- clone -- [remote repository]
  [working copy]  <-- pull -- [remote repository]
  [working copy] <-- merge -- [local repository]  <-- fetch -- [remote repository]
  ※ pull = fetch + merge
    
    
■ 資材更新 (上り)
  [working copy] -- add/rm/mv --> [staging area] -- commit --> [local repository]  -- push --> [remote repository]
    
  管理対象にFILEを加える
  $ git add FILE
  管理対象からFILEを除く
  $ git rm FILE
  管理対象のFILEをOLDからNEWに移動する
  $ git mv OLD NEW
    
    
■ CONFLICT
  他者の変更とconflictした場合、当該ファイルは以下のようになっている
    <<<<< HEAD
    (ローカルリポジトリ local repository の内容)
    =====
    (共有リポジトリ remote repository の内容)
    >>>>> (共有リポジトリのコミットID)
  TOBEを残して後は全削除して、add, commit, push すれば良い。
    
    
■ もやもや (基本、実験したら分かる事の筈)
  ・squash は local repository な話なのか?
  ・rebase も 対 local repository な話で push とかが要る認識であってるのか?
  ・fast-forward に理解し切れていない有難みがありそう
    
    
■ quick reference 
  ●ステージングエリア(staging area)にブツを上げる
    $ git add hoge.txt
    $ git add .
    
  ●ローカルリポジトリ(local repository)にブツを上げる
    $ git commit -m "add tutorial #2" -a
    $ git commit --amend = 直前のコミットを変更(上書き)する
    $ git commit -am "commit comment" = add + commit
    
  ●作業フォルダ(working copy)とステージングエリア(staging area)の変更を取り消す
    $ git reset --hard HEAD = staging area と working copy の両方(--hard) を 直前のcommit(HEAD) に戻す
    $ git reset --hard HEAD^ = staging area と working copy の両方(--hard) を 2こ前のcommit(HEAD^) に戻す
    $ git reset --hard ORIG_HEAD = staging area と working copy の両方(--hard) を 最新のcommit(HEAD^) に戻す
    
  ●ブランチを作ったり統合したり消したり
    $ git branch = 現在地を確認する
    $ git branch hoge = hogeブランチを作成する
    $ git checkout hoge = hogeブランチに移動する
    $ git checkout -b issues/2_tutorial = 新規ブランチを作ってソコに移動する
    $ git rebase master = 今居るブランチの基底点を今のmasterに改める
    $ git merge hoge = hogeの内容を今居るブランチに取り込む
    $ git branch -d hoge = hogeブランチを消す
    $ git branch --merged = 今居るブランチに取り込まれたブランチの一覧を表示する
    $ git branch --no-merged = 今居るブランチに取り込まれていないブランチの一覧を表示する
    
  ●変更内容を一時退避する
    $ git stash save "any comment" = まだ作業中なのでコミットしたくない変更内容を一時的に退避させる
    $ git stash list = 退避した変更内容の一覧を表示する
    $ git stash show
    $ git stash pop = 一番に上に乗っかっている変更内容を取り出す
    
  ●タグを付ける
    $ git tag v1.0 = 直近のcommitにv1.0という名前のタグ(コミットIDの別名)を付ける
    $ git tag = タグの一覧を表示する
    $ git tag v0.9 任意のコミットID = 任意のコミットIDのコミットに対してv0.9という名前のタグを付ける
    $ git tag -d v0.9 = 指定のタグ(v0.9)を削除する
    
  ●エイリアス(ギットコマンドの短縮名)な話
    $ git config --global alias.co checkout = チェックアウトに「co」という短縮名を付ける
    $ git config --global alias.st status = ステータスに「st」という短縮名を付ける
    $ git config --global alias.br branch = ブランチに「br」という短縮名を付ける
    $ git config --global alias.ci commit = コミットに「ci」という短縮名を付ける
    $ git config -l = コンフィグの詳細を確認する
    
  ●共有リポジトリ(remote repository)な話
    $ git remote add origin ~/sharedrepository.git = 任意のパス(~/sharedrepository.git)をリモートリポジトリとして「origin」という名前で今居るリポジトリに追加する
    $ git config -l = リモートリポジトリの在り処(remote.origin.url)を確認する
    $ git remote rm origin = 「origin」っていう名前のリモートリポジトリへのリンクを外す
    $ git clone ~/sharedrepository.git localrepository = 任意のリモートリポジトリを任意の名前のローカルリポジトリとして複製してくる
    
  ●共有リポジトリ(remote repository)にブツを上げたり下げたり 
    $ git push origin master = 「origin」って名前の共有リポジトリにローカルリポジトリのmasterブランチの資材を挙げる
    $ git push origin issues/2_tutorial
    $ git push -f origin issues/2_tutorial
    $ git pull origin master = 「origin」って名前の共有リポジトリの資材をローカルリポジトリのmasterブランチに取り込む
    
  ●未整理 
    $ git cherry-pick -x 898c769381921c3a8 = 任意のコミット(特定できれば尻尾は割愛可。最低7桁)を今居るブランチに取り込む
    $ git merge --squash issues/2_add-tutorial
    
■ ref
  training-kit
  https://github.com/github/training-kit
  ドットインストール git入門
  http://dotinstall.com/lessons/basic_git#!comments
  「Pro Git」の日本語版
  https://git-scm.com/book/ja/v2
  インタラクティブにgitのコマンドが学べる「try git」
  https://try.github.io/levels/1/challenges/1
  https://www.codeschool.com/learn/git

tag : command repository remote local staging_area working_copy add commit push git

2017-02-21 23:27 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud