[TOC] 遠端倉庫命令 === 複製/新增/刪除 --- ``` git clone (github倉庫網址) git remote add origin (github倉庫網址) git remote remove origin (github倉庫網址) ``` 顯示所有遠端倉庫的名稱及其對應的 URL --- ``` git remote -v ``` 顯示: origin (github倉庫網址) (fetch) origin (github倉庫網址) (push) fetch->遠端拉到本地 push->本地推到遠端 遠端拉到本地(遠端有新增的情況) --- ``` git fetch ``` 遠端同步本地(遠端有刪除的情況) --- ``` git fetch --prune ``` 刪除origin --- ``` git remote remove origin ``` 更改origin名稱 --- ``` git remote add my-origin (github倉庫網址) ``` push到遠端 --- ``` git push my-origin master ``` 改變遠端githunb默認分支名稱 --- github setting -> Branches -> Default branch -> 選擇新的默認分支-> Update 查看分支情況 === 查看本地分支 --- ``` git branch ``` 查看遠端分支 --- ``` git branch -r ``` 查看所有隱藏分支(本地+遠端) --- ``` git branch -a ``` 查看本地跟遠端分支有沒有同步 --- ``` git branch -vv ``` 檢查本地跟遠端關聯情況 --- ``` git remote show origin ``` 查看本地refs分支 --- ``` more .git/packed-refs ``` 查看遠端refs分支 --- ``` more .git/refs/origin/master ``` 查看Hash值(指針位置) --- ``` git show-ref ``` 清理本地中,已經被遠端刪除的分支 --- ``` git remote prune origin ``` 遠端跟本地分支交互 === 把遠端的origin master merge 到本地master --- ``` git merge origin/master ``` 新增本地分支到遠端 --- 遠端跟本地分支沒有關聯的話,會報錯。 方法1(雖然會推到遠端,但還是沒有跟遠端倉庫關聯) ``` git push origin (新分支名稱) ``` 方法2:(會推到遠端,且跟遠端倉庫關聯) ``` git push -u origin (新分支名稱) ``` git fetch vs. git pull === (pull -> fetch + merge) ![image](https://hackmd.io/_uploads/Bk6NmI37xg.png) ![image](https://hackmd.io/_uploads/Hy_jXU3Qxl.png) git fetch 之後會產生FETCH_HEAD資料夾 可以回溯git fetch的紀錄 git pull 之後會改變FETCH_HEAD資料夾內容 而且會產生ORIG_HEAD資料夾 存放在merge之前的位置,方便回溯資料 重置到merge之前的位置 --- ``` git reset --hard ORIG_HEAD ``` 刪除本地已經被merged的分支 === ``` Step1:查看本地已經被merged到該分支的其他分支 git branch --merged master(分支名稱) Step2: 刪除本地已經被merged的分支 (grep -v 排除master之支) (xargs 其餘分支執行刪除指令) git branch --merged master | grep -v "master" | xargs git branch -d Step3: 清理本地已經被merged的分支和遠端已經被刪除的分支 (本地也刪除,遠端已經被刪除的分支 --> git remote prune origin) git branch --merged master | grep -v "master" | xargs git branch -d && git remote prune origin ``` 刪除遠端分支 === ``` Step1: 確保遠端跟本地同步 git fetch origin Step2: 查看遠端分支 git branch --remote Step3: 查看已經被merged到master的分支 git branch --remote --merged master Step4: 排除master 分支本身 git brnach --remote --merged master | grep -v "master" Step5: 去除分支前面的 "origin/" 前綴,只留下分支名稱 git branch --remote --merged master | grep -v "master" | sed 's/origin\///' Step6: 刪除那些已合併進 master 的遠端分支 git branch --remote --merged master | grep -v "master" | sed 's/origin\///'| xargs git push origin --delete ```