# Git 紀錄 ## 基本使用 預設分支 master 建立分支 git branch develop 檢視全部分支 git branch 切換分支 git checkout master 建立並切換分支 git checkout -b br1 刪除分支(目前在的分支不能刪) git branch -d br1 分支沒被合併刪除 git branch -D br1 切分支情景: 1. 多人開發時切個人分支 2. 開發新功能時切功能分支 3. 分開發、測試、正式開分支 不小心刪除分支復原 git branch develop 357a612 合併分支:注意誰合併誰 假設要將 dev 合併到 master 先切換到 master 下 git merge dev 合併分支單向合併,線圖比較不會亂,所以需要先決定主分支是哪一支 若需要從主分支開新版本開發,可以再創一個分支繼續進行 解決衝突: 只有在兩個分支同時修改同的檔案的同一個地方時,才會發生衝突 否則會自動合併,所以事前溝通分工很重要 解決衝突的辦法在下 git status 時就會寫的很詳細了 git merge xxx => 發生衝突 => 此時下 git status 會發現狀態是 merging,且會要求處理衝突情況 => 此時可以選擇 1. 放棄合併:git merge --abort 或 2. 解決衝突 => 回到衝突的原始檔案,會標示衝突的位置與兩個版本個別的程式碼(git會自動加上一些符號顯示此處衝突),處理完成衝突後 => git add 衝突檔,成功的話下 git status 會顯示 All Conflicts fixed,但還是位於 merging 狀態 => 再下 git commit 就成功了 git diff 看目前檔案與版控上的檔案有何不同 快轉機制(Fast-forward) merge 時,如觸發合併的分支在拆分支出去後都沒有改變,會觸發快轉機制。 觸發合併的分支將會直接跟被合併的分支結合變成同一條。 缺點:dev 分支可能會有一堆 commit 版本,合併到 master 會很亂 但通常會關閉快轉機制,保證線圖好看與可以記錄版本狀態 git merge develop --no--ff git pull 把遠端儲存庫的版本下載回來 git pull = git fetch + git merge git fetch:把遠端儲存庫拉下來 git merge:合併到本端主線 快轉機制使用時機:若今天你的同事先把 master push 到遠端儲存庫了,而你這邊的程式還沒 merge,那你執行 git fetch 時會將遠端的 master 拉下來,但意義上遠端根本地的 master 是同一條,這時候就可以用快轉機制把他們兩個合併,線圖看起來也會比較正常。 不產生 commit 的 merge git merge --no-ff --no-commit develop 下完之後狀態會是 merging 處裡完測試等事項後再下 git commit 來提交 復原合併 git reset --hard ORIG_HEAD 壓縮合併(squash) 將某分支的全部版本壓縮到原分支的新版本上,不能跟 --no-ff 共用(因為本來就不會將子分支拉線到主分支) 不會影響子分支,主分支上會多一個 commit,合併子分支的版本進去 使用情境:如果要做小修改,不構成一個版本或分支,可以開做完版本後,利用壓縮合併到主分支,再刪除修改的版本或分支,讓歷程看起來比較乾淨。 刪除分支 git branch --merged 秀出已經合併過的分支 git branch --no-merged 秀出還沒合併過的分支 git branch -d new2 刪除已經合併過的分支 git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d ## 協同作業 git clone URL git clone --help ## 上傳到遠端平台 檢查專案是否有連結遠端 git remote -v 列出所有遠端分支 git branch -r ## 取得遠端分支 把專案 clone 下來後,預設只會幫你開master分支 若專案中存在其他分支,可以直接用 git checkout 分支名稱 會自動在本地端建立該分支,並與遠端建立關聯 ## 發布本地分支 git push -u origin 分支名稱 ## 刪除遠端追蹤分支 git fetch -prune
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up