Updated Nov/13/2022

いちばんやさしい Git & GitHub の教本 第2版

第3章: ファイルをバージョン管理してみよう



ローカルレポジトリ

[リポジトリの作成]
 $ git init    # ローカルリポジトリを作成する

[コミットの作成]
 $ git add       # ステージングエリアに変更を登録する
 $ git commit    # コミットを作成する
 $ git rm        # Git 管理下のファイルを削除する

[状態の復元]
 $ git checkout   # ワークツリーの変更を取り消す
 $ git reset      # ステージングエリアに追加した変更をワークツリーに戻す

[状態の確認]
 $ git status     # ローカルリポジトリの状態を確認する
 $ git diff       # 各エリアの差分を確認する
 $ git log        # コミットの履歴を確認する

ローカルリポジトリを作成する

  1. git-bash ウィンドウで作業を行う。
  2. ホームディレクトリに ~/ichiyasa ディレクトリを作成する。
  3.   $ cd
      $ pwd
      /c/Users/nitta
      $ mkdir ichyasa
    
  4. ~/ichiyasa/Git_MEMO.md ファイルを作成する。
  5. # Git 学習メモ
    ## Git コマンド
    
  6. ローカルリポジトリを作成する。
  7.   $ cd ichiyasa
      $ git init
      Initialized empty Git repository in C:/Users/nitta/ichiyasa/.git/
    
  8. ローカルリポジトリの状態を確認する
  9. $ git status
    On branch master
    
    No commits yet
    
    Untracked files:
      (use "git add ..." to include in what will be committed)
            Git_MEMO.md
    
    nothing added to commit but untracked files present (use "git add" to track)
    
  10. ステージングエリアに登録する
  11.   $ git add Git_MEMO.md
    
  12. ステージングエリアに登録されたことを確認する。
  13.   $ git status
      On branch master
      
      No commits yet
      
      Changes to be committed:
        (use "git rm --cached ..." to unstage)
              new file:   Git_MEMO.md
    
  14. ワークツリー内のGit_MEMO.mdを変更する。
  15. # Git 学習メモ
    ## Git コマンド
    - ローカルレポジトリを作る
    -- git init
    
  16. ワークツリーとステージングエリアの差分を表示する
  17. $ git diff
    diff --git a/Git_MEMO.md b/Git_MEMO.md
    index 2053db8..09f7306 100644
    --- a/Git_MEMO.md
    +++ b/Git_MEMO.md
    @@ -1,3 +1,4 @@
     # Git 学習メモ
     ## Git コマンド
    -
    +- ローカルレポジトリを作る
    +-- git init
    
  18. ステージングエリアとGitディレクトリの差分を表示する
  19. $ git diff --cached
    diff --git a/Git_MEMO.md b/Git_MEMO.md
    new file mode 100644
    index 0000000..2053db8
    --- /dev/null
    +++ b/Git_MEMO.md
    @@ -0,0 +1,3 @@
    +# Git 学習メモ
    +## Git コマンド
    +
    
  20. ローカルレポジトリにコミットする。
  21. ステージングエリアからローカルレポジトリにコミットする。 エディタが開くので、どのような変更を行ったかを入力して閉じる。
    $ git commit
    
  22. Git_MEMO.md を変更する。
  23. ファイルをステージングエリアに登録する
  24. $ git add Git_MEMO.md
    
  25. ファイルを1行メッセージとともにコミットする。
  26. $ git commit -m "ローカルリポジトリの状態の確認コマンドを記載"
    [master (root-commit) 8868c05] ローカルリポジトリの状態の確認コマンドを記載
     1 file changed, 6 insertions(+)
     create mode 100644 Git_MEMO.md
    
  27. ローカルリポジトリの状態を確認する
  28. nitta@gtune MINGW64 ~/ichiyasa (master)
    $ git status
    On branch master
    nothing to commit, working tree clean
    
  29. (lesson 19)ローカルリポジトリでの操作を取り消す。
  30. ワークツリーの変更を取り消して、直前に commit した状態まで戻す(git checkout)。
    1. エディタで Git_MEMO.md に数行追加する。
    2. 状態を確認する
    3. $ git status
      On branch master
      Changes not staged for commit:
        (use "git add ..." to update what will be committed)
        (use "git restore ..." to discard changes in working directory)
              modified:   Git_MEMO.md
      
      no changes added to commit (use "git add" and/or "git commit -a")
      
    4. ワークツリーの変更を取り消す。
    5. $ git checkout -- Git_MEMO.md
      $ git status
      On branch master
      nothing to commit, working tree clean
      
    ステージングエリアへの登録を取り消す。
    1. エディタで Git_MEMO.md に数行追加する。
    2. ファイルをステージングエリアに登録する。
    3. $ git add Git_MEMO.md
      $ git status
      On branch master
      Changes to be committed:
        (use "git restore --staged ..." to unstage)
              modified:   Git_MEMO.md
      
    4. ステージングエリアへの登録を取り消す。(HEAD は、このローカルリポジトリで最後にcommit した状態を表す)
    5. $ git reset HEAD Git_MEMO.md
      Unstaged changes after reset:
      M       Git_MEMO.md
      
      $ git status
      On branch master
      Changes not staged for commit:
        (use "git add ..." to update what will be committed)
        (use "git restore ..." to discard changes in working directory)
              modified:   Git_MEMO.md
      
      no changes added to commit (use "git add" and/or "git commit -a")
      
    6. 手元のファイルは変更を加えたままになっている。
    7. 手元の状態を最後にcommitした状態に戻す。
    8. $ git checkout -- Git_MEMO.md
      
  31. (lesson 20) Git の管理下にあるファイルを削除する。
    1. 後で削除するファイル remove_me.txt を作成する。
    2. ファイルをステージングエリアに登録する。
    3. $ git add remove_me.txt
      warning: LF will be replaced by CRLF in remove_me.txt.
      The file will have its original line endings in your working directory
      
    4. ファイルをcommitする。
    5. $ git commit -m "remove_me.txt added"
      [master 27b7340] remove_me.txt added
       1 file changed, 1 insertion(+)
       create mode 100644 remove_me.txt
      
    6. ファイル remove_me.txt を削除する。
    7. $ git rm remove_me.txt
      rm 'remove_me.txt'
      $ ls
      Git_MEMO.md
      $ git status
      On branch master
      Changes to be committed:
        (use "git restore --staged ..." to unstage)
              deleted:    remove_me.txt
      
    8. ファイルを削除したことをcommitする。
    9. $ git commit -m "remove_me.txt removed"
      [master a46424d] remove_me.txt removed
       1 file changed, 1 deletion(-)
       delete mode 100644 remove_me.txt
      
      $ git status
      On branch master
      nothing to commit, working tree clean
      
  32. (lesson 21) Git で管理しないファイルを設定する。
  33. .gitignore ファイルに記述する。
    1. 管理しないファイルとして sample.txt を作成する。
    2. .gitignore ファイルを作成する前の状態を確認する。
    3. $ git status
      On branch master
      Untracked files:
        (use "git add ..." to include in what will be committed)
              sample.txt
      
      nothing added to commit but untracked files present (use "git add" to track)
      
    4. .gitignore ファイルを作成する。
    5. $ cat .gitignore
      sample.txt
      
    6. 状態を確認する。
    7. $ git status
      On branch master
      Untracked files:
        (use "git add ..." to include in what will be committed)
              .gitignore
      
      nothing added to commit but untracked files present (use "git add" to track)
      
    8. .gitignore ファイルをステージングエリアに登録する。
    9. $ git add .gitignore
      warning: LF will be replaced by CRLF in .gitignore.
      The file will have its original line endings in your working directory
      
      $ git status
      On branch master
      Changes to be committed:
        (use "git restore --staged ..." to unstage)
              new file:   .gitignore
      
    10. .gitignore ファイルを commit する。
    11. $ git commit -m ".gitignore added"
      [master df4fb74] .gitignore added
       1 file changed, 1 insertion(+)
       create mode 100644 .gitignore
      
      $ git status
      On branch master
      nothing to commit, working tree clean
      
  34. (lesson 22) commit の履歴を確認する。
  35. $ git log
    commit df4fb74b1fd0621a79d68c0b1985bc51521fc78b (HEAD -> master)
    Author: Yoshihisa Nitta 
    Date:   Fri Nov 25 13:57:48 2022 +0900
    
        .gitignore added
    
    commit a46424d17b804c7e3b4ab612474aa5e7b1a042c4
    Author: Yoshihisa Nitta 
    Date:   Fri Nov 25 09:19:47 2022 +0900
    
        remove_me.txt removed
    
    ...(略)
    
    
    "-p" オプションをつけると、前の commit との diff が出力される。
    $ git log -p
    commit df4fb74b1fd0621a79d68c0b1985bc51521fc78b (HEAD -> master)
    Author: Yoshihisa Nitta 
    Date:   Fri Nov 25 13:57:48 2022 +0900
    
        .gitignore added
    
    diff --git a/.gitignore b/.gitignore
    new file mode 100644
    index 0000000..470660f
    --- /dev/null
    +++ b/.gitignore
    @@ -0,0 +1 @@
    +sample.txt
    
    commit a46424d17b804c7e3b4ab612474aa5e7b1a042c4
    Author: Yoshihisa Nitta 
    Date:   Fri Nov 25 09:19:47 2022 +0900
    
        remove_me.txt removed
    
    diff --git a/remove_me.txt b/remove_me.txt
    deleted file mode 100644
    index 8baef1b..0000000
    
    ...(略)
    

Yoshihisa Nitta

http://nw.tsuda.ac.jp/