2018年1月26日 星期五

Git - 常用指令 : git add, git commit, git push, git status, git log, git show

  • git add
    • 將選擇的檔案先加入到 staging area
      • git add test_file.c
      • git add ../../test_file.h
        • 說明 : 不一定只能加入同一層的檔案 
    • 直接將修改過的現有檔案加入到 staging area, 後來新增加的檔案不加入
      • git add -u
        • 說明 :
          如果修改的檔案數量很多時, 雖然用 -u 比較快,
          但還是比較建議一個一個檔案加入到 staging area
  • git commit
    • 將已經加入到 staging area 的檔案, 放到 git directory
      • git commit
    • 跳過 git add 的步驟, 直接 git commit
      • git commit -a
    • 修改已經 commit 的 “說明” 部分
      • git commit --amend
  • git push
    • 將已經 commit 的檔案 push 到遠端的 server
      • git push
        • 說明 :
          git push 後如果出現下面的error 訊息,
          error: failed to push some refs to 'ssh://git@sw.test.com.tw/project/code.git'
          表示有人跟你改到同一個檔案, 而且比你早放到 remote 端的 server,
          所以在你要 push 程式的時候, 跟 server 的程式發生衝突
  • git status
    • 查看檔案的狀態, 狀態有分三種
      • git status
        • [1] 檔案是已經被修改過且做過 git add
               Changes to be committed: (將要提交的檔案)

               (use "git reset HEAD <file>..." to unstage)

                       modified : add.c
        • [2] 檔案是已經被修改過但是還沒 git add
               Changes not staged for commit: (更動過但未提交的檔案)
               (use "git add <file>..." to update what will be committed)
               (use "git checkout -- <file>..." to discard changes in working directory)

                      modified : not_add.c
        • [3] 檔案是新增加的而且還沒 git add
                Untracked files: (未被追蹤的檔案)
                (use "git add <file>..." to include in what will be committed)

                      new_file.c
    • 只查看 [1] [2] 兩種狀態的檔案
      • git status -uno
        • 因爲開發大型的專案, 有時候重新 build code 之後,
          用 git status 顯示檔案的狀態, 會出現非常多的檔案,
          會不方便確認修改過的檔案是否做過 git add,
          所以會用在 git status 後面加上 -uno,
          但是要特別注意的是, 如果是新增加的檔案,
          用 git status -uno 不會顯示出來
        • 最後一行會顯示下列的訊息
          Untracked files not listed (use -u option to show untracked files)
  • git log
    • 查看 commit 記錄
      • git log  --stat
        • 說明:
          commit 記錄包含 : commit hash 號碼, 作者, 日期時間, commit 的訊息
    • 查看更動的檔案和行數
      • git log  --stat
    • 查看特定作者的所有 commit
      • git log --author=kai-yuan
    • 查看 commit 記錄並加上 grep 功能
      • git log | grep "ieee80211"
    • 查看特定檔案所有修改過的記錄
      • git log -p code.c
        但這樣的方式會比較不好找比較之前的記錄,
        可以使用下面的方式將結果轉成 txt 文字檔後,
        再搜尋想要找的關鍵字
        git log -p code.c > code.c_test.txt
  • git show 
    • 顯示最新的 commit 修改內容
      • git show
    • 顯示特定的 commit 修改內容
      • git show commit_hash_number
        • 說明 :
          ex : git show 123456,
          不一定要完整的 commit hash 號碼, 只要前 6 碼就可以

  • 圖片說明 :
    Working directory : 目前工作的目錄
    Staging area : 暫存檔案準備遞交的區域
    git directory (Repository) : 儲存庫

沒有留言:

張貼留言