2017年11月16日 星期四

Git - 常用指令 : git config, git clone, git branch, git checkout, git pull

    • git config
      • 設定基本資料
        • git config --global user.name "sky"
        • git config --global user.email "email@gmail.com"
      • 檢查設定
        • git config --list
      • git clone
        • 複製整份程式碼 (以 pttchrome 爲例)
          •  git clone https://github.com/iamchucky/PttChrome.git
            • 說明 :
              (1) 複製紅色框內 git 的 URL
              (2) git clone 時會產生一個新的名爲 “PttChrome” 的資料夾
      --------------------------------------------------------------------------- 
      ---------------------------------------------------------------------------
      • git branch
        • 查看 remote 及 local 所有的 branch
          • git branch -a
            • 說明 :
              (1) branch name 前有 " * ", 表示現在所在的 branch
              (2) branch name 爲白色的, 表示 branch 爲 remote 的
              (3) branch name 爲紅色的, 表示 branch 爲 local 的
        • 查看 remote 的 branch
          • git branch -r
            • 說明 :
              (1) 如果 branch 是 remote, git branch -a 和 -r 的結果不同
              (2) 用 git branch -a 看 remote branch 前面會多 remote/
                    ➡  remotes/project/remote_branch
              (3) 用 git branch -r 看 remote branch 前面不會有 remote/
                    ➡  project/remote_branch
        • 刪除 branch
          • git branch -D test_branch
            • 說明 :
              如果現在的 branch 爲 test_branch 時, 就不能刪除 test_branch,
              要先 checkout 到其他 branch 才能刪除 test_branch,
              否則會出現下面的 error,
               " Cannot delete the branch 'test_branch' which you are currently on."
      • git checkout
        • 切換到已經存在的 branch
          • git checkout existing_branch
        • 切換到 remote  branch
          • git checkout project/remote_branch
            • 說明 :
              如果要切換到 remote  branch, 在 checkout 時不需要加前面的 remotes
        • 增加新的 branch , 同時切換到新的 branch
          • git checkout -b new_branch
            • 說明 :
              (1)
              切換到新的 branch 時, 需要注意權限, 如果用 root 切換,
                    切換到新的 branch, 可能有些檔案的權限是 root,
                    可能會導致之後無法修改檔案
            • (2) 新的 branch 的內容(commit 及 file)是根據原始的 branch 所產生的
                    ex :
                    假設 branch1 有 A, B 兩個 commit,
                         如果從 branch1 切換到新的 branch : N_branch1, 
                         那 N_branch1 就只有 A, B 兩個 commit

                   假設 branch2 有 A, B, C 三個 commit, 
                         如果從 branch2 切換到新的 branch : N_branch2,
                         那 N_branch2 就會有 A, B, C 三個 commit

        • 從遠端重新 checkout 某個檔案或某個資料夾 ( “--” 的左右都要空一格) 
          • checkout 某個檔案
            • rm -rf code.c
            • git checkout -- code.c
          • checkout 整個資料夾
            • rm -rf project/code
            • git checkout -- project/code
      • git pull
        • 將 remote 端同一個 branch 的程式更新到 local 端
          • git pull
            • 說明 :
               git pull 後如果出現下面的error 訊息,
               表示 local 端的 code.c 的跟 remote 端的程式有衝突,
               也就是說已經有人跟你一樣改到 code.c 的同一段程式,
               而且比你早把程式放到 server 上
                                          error: Your local changes to the following files would be overwritten by merge:
                                                    project/code.c
                                          Please, commit your changes or stash them before you can merge.
                                          Aborting


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

      沒有留言:

      張貼留言