git 多人協作

目錄

git 工作流程

取自 https://www.git-tower.com/learn/git/ebook/en/command-line/remote-repositories/introduction

常用 linux 指令清單


// 清除螢幕
{ctrl} + {l}

// 查看當下資料夾內容
ls 

// 顯示某個檔案內容
cat {fileName}

// 建立資料夾
mkdir {folderName}

// 建立文字檔案
touch {fileName}

// 編輯文字檔案
vim {fileName}

// 刪除檔案
rm {fileName}

// 複製檔案到某處
cp {sourcc} {target}

常用 git 指令清單

// 設定使用 git commit/git log 時顯示的使用者名稱
git config --global user.name "你的名字"

// 設定使用 git commit/git log 時顯示的信箱
git config --global user.email "你的信箱"

// 建立本機 git repository
git init

// 新增檔案到 git 
git add {fileName}

// 新增全部檔案到 git
git add .

// 提交變更
git commit 

// 快速提交變更
git commit -m "訊息"

// 快速提交變更且選取全部檔案
git commit -m "訊息" --all

// 修改上一次的 commit 訊息
git commit --amend

// 顯示當下 git repository 狀態
git status

// 顯示變更歷史訊息
git log

// 顯示變更歷史訊息以及變更內容
git log -p 
git log -p --word-diff

// 顯示最後一個 commit 的歷史訊息與變更內容
git show

// 比對上次 commit 跟現在的工作目錄差異
git diff

// 比對某個 commit 跟現在的工作目錄差異
git diff {commit}

// 比對某兩次的變更內容
git diff {commit1} {commit2}

// 取消最近一次的變更
git checkout .

// 切換至某個分支
git checkout {remoteName} {branchName}

// 建立新分支
git checkout -b {branchName}

// 還原工作目錄至上一次 commit 之狀態
git reset 

// 還原工作目錄至某次 commit 之狀態,但是保留目前變更
git reset {commit}

// 還原工作目錄至某次 commit 之狀態,放棄目前變更
git reset {commit} --hard

// 暫存目前工作目錄狀態
git stash

// 檢視目前已經暫存的工作目錄狀態佇列
git stash list

// 套用某次的暫存變更
git stash apply {stash{x}}

// 取出上一次暫存的工作目錄狀態
git stash pop

// 清除已經暫存的工作目錄狀態佇列
git stash clear

// 合併兩個分支
git merge {branch1} {branch2}

常用 vim 指令

// 進入編輯模式
{i} key

// 離開編輯模式
{esc} key

// 離開編輯器
:q

// 儲存變更並離開編輯器
:wq

git 多人協作常用指令

// 取得遠端 repository
git clone {URL}

// 取得遠端 repository 並在本地端改名
git clone {URL} {newName}

// 取得遠端 repository 狀態
git fetch

// 取得對應的遠端 branch 狀態並且合併到本地(git merge)
git pull

// 取得指定的遠端 branch 並且合併到本地
git pull {remoteName} {branchName}

// 把已經 commit 的歷史狀態 push 到已經對應遠端
git push

// 把已經 commit 的狀態 push 到遠端的某個 repository
git push {remoteName} {branchName}

// 查看遠端名稱
git remote

// 查看遠端名稱與路徑
git remote -v

// 加入遠端路徑
git remote add {remoteName} {url}

// 加入遠端路徑
git remote remove {remoteName} {url}

// 顯示目前 branch 對應的遠端路徑
git branch -r 

// 設定跟隨遠端的某個 branch,以便使用 git fetch/pull/push
git branch --set-upstream {remoteName}/{branchName}

git 多人協作操作流程

課程內容使用 HelloJS 專用 VM 進行操作,以下按照順序列出課程依序會使用到的指令。

fork 範例專案

使用瀏覽器開啟以下連結:

https://github.com/hellojs-tw/git-101-practice

然後點選箭頭處的 fork

複製你 fork 回來的專案 URL

回到終端機,輸入以下指令:

git clone {你的URL}

// e.g.
git clone https://github.com/trunkkent/git-101-practice.git

操作 fork 下來的 repository

開啟瀏覽器,輸入以下網址以開啟 VM 中的 C9:

http://localhost:9083

然後輸入以下指令:

// 操作 git push

ls

cd git-101-practice

git remote -v

mkdir 2017-00L

cp sample/index.md 2017-00L/index.md

{修改檔案...}

git status

git add .

git commit -m 'update my name'

git push

{輸入帳號密碼...}

當遠端 repo 更新時,把更新 pull 回你自己的 repo

再次使用瀏覽器開啟以下連結:

https://github.com/hellojs-tw/git-101-practice

複製遠端 repo 的 URL

回到 C9 輸入以下指令:

git remote -v

git remote add https://github.com/hellojs-tw/git-101-practice.git

{更新遠端...}

git pull upstream master

git log

如何發出 pull request

回到 C9 更新檔案,輸入以下指令:

{編輯檔案...}

git status

git commit -m 'update nickname' --all

git push

使用瀏覽器打開自己的 repo,例如:

https://github.com/trunkkent/git-101-practice

點選 Pull request 頁籤,再按下 New pull request 按鈕

仔細對照 base 以及 compare 欄位中的 repo 是否符合

輸入這次 pull request 的更新訊息,然後按下 Create pull request