簡單介紹Git版本控制Part4
最終回
Tommy
遠端操作
建立遠端檔案庫
git init --bare
在目前資料夾建立遠端檔案庫
git init --bare folder
開新資料夾並且建立遠端檔案庫
本地檔案庫連結遠端檔案庫
git remote add origin url
新增遠端檔案庫位置
(適合已經有本地端檔案庫)
遠端檔案庫代號origin
git remote show origin
顯示遠端檔案庫資訊
查看遠端的分支
git ls-remote url
列出遠端檔案庫中所有的分支內容
抓取紀錄
git fetch
把遠端commit紀錄抓下來到本地端
(不會重設工作目錄,也不會改變HEAD和分支位置)
origin/master遠端分支
怎麼更新到工作目錄?
把遠端當作分支來看!
merge吧git
git merge origin/master
如果本地端沒有任何commit則master會自動建立
如果本地端有master分支則依照合併方式處理
抓取遠端檔案庫內容
git pull
pull = fetch + merge
拉下紀錄並同時自動merge
(這時候就會改變工作目錄,HEAD,分支位置)
pull可能會遇到衝突
因為有merge的動作
衝突解法跟分支合併一樣
找出誰也在改這裡,然後跟他協調這裡該如何處理
git pull origin master
抓取遠端檔案庫的master分支內容
每次都要打這樣好長
git branch -u origin/master master
設定遠端master跟本地端master為預設推送或拉取的位置
設定過就不用每次打很長
git pull
抓取遠端內容
不用再輸入origin惹
git remote remove origin
刪除遠端檔案庫設定
如果沒有本地端檔案庫
另外一種方式
git clone url
建立相同名稱資料夾並且下載檔案庫全部內容
(全新的本地端檔案庫,同時也設定好遠端預設推送或拉取的位置)
git clone url folder
建立folder資料夾並且下載檔案庫全部內容
(全新的本地端檔案庫,同時也設定好遠端預設推送或拉取的位置)
git push
把本地端的commit推送到遠端
如果沒設定預設推送位置
推送的時候也可以一起設定
git push -u origin master
和 git branch -u origin/master master 意思相同
然後同時也會把commit推到遠端去
push時會先要求pull
因為push上去的commit一定要包含遠端最後一個commit
所以得先pull合併現在遠端最後一commit接下來才能push
Why?
merge解決沒有包含commit的問題
另外一種壞方法
git push -f
強制遠端設為跟本地端一樣的分支位置
(團隊合作中通常禁用,避免不知情的人又合併進去)
新建一個commit然後push才是正解
push -f 不管3721一律蓋掉
push不上去很緊張,只好改用-f硬推,其實你只是沒有pull而已。
git push --force-with-lease
稍微安全一點的做法,你至少要先fetch確定知道有些記錄沒更新到
才能硬推
清除不必要的檔案
git clean -f
清理未版控的檔案(reset不會把沒有版控的檔案刪除)
git gc
清理不必要git的Objects物件
團隊還沒使用git該如何導入
因為決策者他不寫code
因為還沒感受到git的美好
自身經驗分享
成功導入兩間公司使用git
一間原本使用VSS(5人團隊)
一間原本使用SVN(12人團隊)
導入前需要考慮以下事情
考慮性質
開放式 or 封閉式
考慮平台
線上(GitHub, Bitbucket, GitLab...) or 自架(Gitea, GitLab...)
考慮能力
導入者需最熟悉git
團隊成員有問題至少有人可以問
Q & A
Thank you for listening
簡單介紹Git版本控制Part4最終回
By Yi-Tai Lin
簡單介紹Git版本控制Part4最終回
- 782