Git 커멘드 레퍼런스~기본으로부터 응용까지~

소개



Git 명령을 중심으로 한 자신의 명령 참조입니다.
참고까지.

기초지식



지역



작업 영역(소위 로컬 작업 중의 것)

스테이징 에리어(커밋 대기의 에리어, 작업 에리어에서 완료한 것을 한 번 주는 장소)

커밋 이력(커밋된 것)

<그림을 만들어 보았습니다>


HEAD



현재 자신이 참조하는 브랜치/커밋 포인터.
항상 최신 커밋을 참조하는 것은 아니며 모든 히스토리를 참조 할 수도 있습니다.
이 상태는 머리를 분리한 상태(HEAD detached)가 된다.

SHA1 ID



커밋별로 부여되는 고유 ID입니다.
이 ID를 지정함으로써 각종 조작이 가능해진다.
브랜치명이나 태그명, "HEAD"등의 지정으로 옮겨놓을 수도 있다.

클린 병합



브랜치를 병합할 때 경쟁이 없이 자동으로 병합할 수 있는 것.
빠른 순방향 (fast-forward)으로 취급됩니다.

Windows Git GUI 설정



Git 명령



도입 조작편


# 使い方の確認
git       # ヘルプを表示
git help  # ヘルプを表示
git help -a   #全コマンドリスト
git help [コマンド名]    #指定コマンド名の使い方
git [コマンド名] --help  #指定コマンド名の使い方

# Gitのバージョン確認
git --version

# ファイルリストの表示
git ls-files

# ファイルの詳細確認 [Q]で中止
git blame [ファイル名]
git blame README.md    #例
git blame [ブランチ名] [ファイル名]
git blame master README.md  #例

# コミット履歴 [Q]で中止
git log --oneline                #履歴を1行ずつ表示
git log --shortstat --oneline    #上記に加え、短いステータスを表示

설정편


# ユーザー情報設定
git config --global user.name "Your Name"
git config --global user.email "hoge@hoge"

# ユーザー情報確認
git config --global user.name
git config --global user.email
git config --list   # 全設定を表示

# 設定の削除方法
git config --global --unset [Key名]

공통 조작편(Git에 한정하지 않고)


# CurrentDirectoryの確認
pwd

# ファイルリスト表示
ls

# ディレクトリ作成
mkdir [ディレクトリ名]

# ディレクトリ移動
cd [ディレクトリ名]

# ファイル/ディレクトリ削除
rm -r [ディレクトリ名]

# 履歴の表示
history 

리포지토리 생성, 등록


# リポジトリ作成
git init

# ステータス確認、リポジトリの状態を見る
git status

# ファイルをリポジトリに追加
git add [ファイル名]

# コミットする
git commit -m "メッセージ"

# コミット情報を確認する
git log
git log --stat  #コミットを構成しているファイルを見る

# ファイル追加とコミットを同時に行う
# 対象となるのは、既にGitが認識済み(add済み)のファイルに限られる
git commit -a -m "メッセージ"

# ディレクトリ単位でadd(作業エリア→ステージングエリア)する
git add --dry-run .  # 実行時のシミュレーション
git add .

#ファイルを確認する
git ls-tree HEAD

Git GUI 관련


#git GUI 起動
git gui
git citool

#git log viewer 起動
gitk

리포지토리 비교


#作業エリアとステージングエリアの差分比較
git diff

#ステージングエリアとコミット履歴の差分比較
git diff --staged

파일 삭제


#作業エリアで削除したファイルを、ステージングエリアから削除する
#作業エリアにファイルが残っていたとしても、以下のコマンド実行により作業エリアからも削除される
git rm [ファイル名]

파일 이름 변경



탐색기에서 파일 이름을 직접 변경하면 다음 두 가지 작업으로 처리됩니다.
  • 이전 파일 이름의 파일 삭제
  • 새 파일 이름에 파일 추가
  • #Gitにファイル名変更として認識させる、
    #合わせて作業エリアのファイル名も変更される
    git mv [old_file_name] [new_file_name]
    

    파일의 일부만 리포지토리에 반영하려는 경우


  • Git GUI의 Unstaged Changes에서 파일 선택
  • 차이 표시를 반영하려는 행에서 마우스 오른쪽 버튼을 클릭합니다
  • Stage Line For Commit 선택
  • Staged Changes에 선택된 선택된 부분만 반영된다

  • ※git add -p 의 뒤 e 를 선택하는 것으로, vi 에디터에 의한 메뉴얼 조작도 가능하지만, 어렵기 때문에 할애.

    파일 되돌리기


    #ステージングエリアの変更を削除(unstagedにする)
    git reset [file_name]
    
    #コミット履歴のファイルを作業エリアに反映する
    #コミット済みファイルで作業エリアのファイルを上書きする
    git checkout -- [file_name]
    

    내역 확인


    #親子関係を確認する
    git log --parents
    
    #親子関係を確認する(短縮表示)
    git log --parents --abbrev-commit
    
    #直近のログ1件だけを表示する
    git log -1
    
    #GUIで確認する
    gitk
    
    #その他のコマンド
    git log --oneline    # 簡略表示
    git log --patch      # パッチビュー
    git log --stat       # コミットファイルの変化
    git log --patch-with-stat      # 上記2つを結合したもの
    git log --oneline [file_name]  # ファイル指定
    

    커밋 시 댓글 변경


    #直近のコミットのコメントを修正する
    git commit --amend
    

    브랜치 관련


    #SHA1 ID 参照
    git rev-parse HEAD
    git rev-parse master
    git log --oneline
    
    #ブランチの先端のSHA1参照
    git branch -v
    
    #チェックアウト(ファイル取得、HEAD切り替え)
    git checkout [SHA1_ID]
    git checkout [tag_name]
    
    #HEADをmasterに戻す
    git checkout master
    
    #変更を破棄してmasterに戻す
    git checkout -f master
    
    #ブランチを確認する
    git branch
    #全ブランチを確認する
    git branch --all
    #ブランチを確認する(ツリー表示あり)
    git log --graph --decorate --pretty=oneline --all --abbrev-commit
    
    #ブランチを作る
    git branch [new_branch_name]
    
    #ブランチの途中(SHA1_ID指定)から新たなブランチを作る
    git branch [new_branch_name] [SHA1_ID]
    
    #ブランチを作って即座にチェックアウトする
    git checkout -b [new_branch_name] [start_branch_name]
    
    #ブランチを削除する
    git branch -d [branch_name]    #削除時のSHA1_IDが表示される
    
    #削除したブランチを復旧させる
    git checkout -b [new_branch_name] [SHA1_ID of deleted branch]
    
    #ブランチを切り替えた記録を参照する
    git reflog
    

    브랜치 전환 시 작업 영역을 퇴피


    #作業エリアの作業中ファイルをスタッシュに退避(コミット)させる
    #WIP : Work In Progress
    git stash
    
    #スタッシュのリストを見る
    git stash list
    
    #スタッシュを作業エリアに戻す(ポップする)
    git stash pop
    

    스타시 팝을 다른 브런치로 팝하면 어떻게 되나요?



    병합되어 버리기 때문에, 조작은 주의가 필요.

    gitk에서 브랜치 참조



    View > New view > All(local)branches ...check

    브랜치 병합


    #ブランチ間の差分を確認する
    git diff [base_branch_name]...[branch_name]
    
    #ステータスと名前の差分だけを表示する
    #ステータス  A:added, C:copied, D:deleted, M:modified, R:renamed
    git diff --name-status [base_branch_name]...[branch_name]
    
    #マージする
    #マージ後に残したいブランチ(親ブランチ)をチェックアウトしてから実行
    git merge [merged_branch_name]
    
    #マージを中止する(もとに戻す)
    git merge --abort
    

    태그 관련


    #タグをつける
    git tag [tag_name] -m "comment" [SHA1_ID]
    
    #タグの内容を表示する
    git show [tag_name]
    
    #タグを削除する
    git tag -d [tag_name]
    

    클론


    #リポジトリを複製(クローン)する
    git clone [original_branch] [cloned_branch]
    
    #クローンしていない他のブランチを取得する
    git checkout [original_branch2]
    git checkout -b [original_branch2]remotes/origin/[original_branch2]  #こちらと同義
    

    베어 리포지토리


  • 작업 영역이 없는 리포지토리.
  • clone, push, pull 가 기본 조작이 된다.
  • #ベアリポジトリの作成
    git clone --bare [original_repository] [cloned_bare_repository]
    

    원격 관련


    #リモートリポジトリの確認
    git remote          #リモートの名前だけの確認
    git remote -v show  #リモートの確認
    git remote -v show [remote_name]  #対象リモートの詳細確認
    
    #リモートの名前変更(origin -> new_name)
    git remote rename origin [new_name]
    
    #追跡リポジトリの追加
    git remote add [new_remote_name] [repository_path]
    
    #リモートリポジトリの調査
    git ls-remote
    git ls-remote [remote_name]
    
    #リモートの追跡先(参照先)にプッシュする
    git push [remote_name] [pushed_branch_name]
    
    
    ####
    ####ブランチ操作
    ####
    
    #作業エリアで作った新しいブランチをプッシュする
    git push --set-upstream [remote_name] [new_branche_name]
    
    #ブランチを削除し、リモートに反映する
    git branch -d [branch_name]
    git push [remote_name] :[branche_name]
    
    
    ####
    ####タグ操作
    ####
    
    #タグをプッシュする
    git push [remote_name] [tag_name]
    
    #タグを削除する
    git push [remote_name] :[tag_name]
    

    【유스 케이스】 커밋 이력(리모트 리포지토리)과의 차이 비교


    #作業エリアの最新(HEAD)とリモートリポジトリを比較する
    git diff HEAD..orgin/master
    

    diff에 대해서는 이쪽을 보는 편이 빠르다.
     ■ 잊을 수 있는 사람을 위한 git diff 치트 시트
    htps : // m / shib k / ms / 8c9362 a 5bd399b9c56

    원격에서 병합


    #プルする:フェッチとマージが実行される
    git pull
    
    #プルする:fast-forwardに限定する(競合がある場合にオートマージしない)
    git pull --ff-only
    #これをデフォルト設定にしたい場合
    git config  pull.ff only
    
    #フェッチする
    git fetch
    
    #FETCH_HEADを確認する
    #fetch結果(FETCH_HAED)とローカル作業エリア(HEAD)に差分がある場合、異なるSHA1_IDが表示される
    git rev-parse FETCH_HEAD
    git rev-parse origin/master
    git diff HEAD..FETCH_HEAD
    
    #マージする
    git merge FETCH_HEAD
    

    git pull의 위험



    pull은 fetch와 merge를 동시에 실시하기 때문에 초보자는 혼란하기 쉽다.
    무엇이 변경되고 있는지를 확인하면서 진행하려면, fetch와 merge를 이용하는 것이 좋다.
    #まずはリモートの変更を取り込む(フェッチする)
    git fetch
    
    #ローカル作業エリア(HEAD)とフェッチ結果(FETCH_HEAD)の差分を確認する
    git diff HEAD FETCH_HEAD
    
    #マージを行う
    git merge FETCH_HEAD
    

    【유스 케이스】 git pull로 충돌이 발생한 경우


    #以下のメッセージが出たら
    error: Your local changes to the following files would be overwritten by merge:
        [directory/file]
    Please, commit your changes or stash them before you can merge.
    
    ##スタッシュ(変更分を退避)してからプルして、スタッシュをポップ(元に戻す)する##
    #スタッシュ
    git stash
    
    #スタッシュのリストを確認
    git stash list
    
    #プルする
    git pull
    
    #スタッシュを作業エリアに戻す(ポップする)
    git stash pop
    
    #スタッシュリストがなくなっていることを確認
    git stash list
    

    log 관련



    Git log 관련 명령 참조

    rebase


    #rebaseしたいブランチ上で以下のコマンド
    git rebase [target_branch_name]
    git rebase master
    

    rebase 후에 원래 상태로 되돌리기


    #HEADの履歴を追う
    git reflog
    
    #もとの状態に戻す
    #  HEAD@{4}に戻したい場合
    git reset --hard HEAD@{4}
    

    rebase로 히스토리 병합



    gui에서는 귀찮기 때문에 SourceTree 등을 사용하는 것이 좋을 것 같다.
    htps : // 코 m / 료나 오카 / ms / 7c129 98 A7f81c507 A61

    config 관련


    #helpを見る
    git config --help
    

    구성 우선순위


  • local < global < system
  • local은 리포지토리 고유의 구성.
  • global은 사용자 설정과 동일합니다.
  • system은 유저를 넘은 스코프가 된다.

  • config 확인


    #構成レベルごとの確認
    git config --local --list
    git config --global --list
    git config --system --list
    
    #出力例
    branch.master.remote=github
    ## branch : セクション
    ## master : サブセクション(なし、あるいは複数ありの場合もある)
    ## remote : キー
    

    좋은 웹페이지 즐겨찾기