girpro之四連接遠端

git remote

  • git remote列出所有已經(jīng)添加的遠端
  • git remote -v順便列出他們的url
  • git remote add <name> <url>添加一個新遠端
  • git remote rm <name>移除遠端
  • git remote rename <old-name> <new-name> 重命名

git clone會在本地自動創(chuàng)建一個叫做origin的遠端。

git fetch

git中每個人都是一個完整的庫,所以也就不存在svn那種從中央庫拿文件的概念。中央庫沒啥了不起,只不過大家都以這個庫的文件作為基準來進行開發(fā)。所謂的fetch,其實是把當前庫的git狀態(tài)更新到中央庫的狀態(tài),下載所有快照之類的。

  • git fetch <remote> 從遠端獲取所有的分支
  • git fetch <remote> <branch> 從遠端獲取某個分支

文中多次提到的detached HEAD state,其實是指當前的狀態(tài)脫離了最新的head。最新的head已經(jīng)被儲存下來了,而現(xiàn)在ref被指向其它的某個版本,可以通過git checkout HEAD來接觸這種狀態(tài)

  • git branch -r 可以看到遠端所有的branch

git pull

相當于fetch+merge??梢砸暈椋?/p>

git pull origin
git merge origin/master
  • git pull --rebase <remote> 不使用merge,使用rebase

粗略理解merge和rebase的區(qū)別。
merge把別人分支上的東西作為一個merge commit提交到本地的分支上;
rebase維持一個線性的log,把當前的分支的開頭(基)懟到最新的公共分支上。

  • git config --global branch.autosetuprebase always可以設(shè)置把fetch里的操作全部變成rebase

git push

  • git push 最普通的用法,安全。在你merge或rebase了線上那條分支之前,push會報錯。
  • git push --force 不管有沒有merge,強行push。會把遠端強行變得跟本地一樣,非常危險。
  • git push <remote> --all push所有分支
  • git push <remote> --tags push本地所有tag

在push之前一定要pull merge一次。正像你的svn gui,其實每次commit之前都會幫你做一次update操作,以更新本地的數(shù)據(jù)到最新狀態(tài)。

墜吼是只push到bare庫,不要隨便push到到別人庫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容