一:git remotegit
遠程倉庫是指託管在網絡上的項目倉庫,可能會有好多個,其中有些你只能讀,另外有些能夠寫。同他人協做開發某個項目時,須要管理這些遠程倉庫,以便推送或拉取數據,分享各自的工做進展。管理遠程倉庫的工做,包括添加遠程庫,移除廢棄的遠程庫,管理各式遠程庫分支,定義是否跟蹤這些分支,等等。服務器
在克隆完某個項目後,至少能夠看到一個名爲origin的遠程庫,Git默認使用這個名字來標識你所克隆的原始倉庫:網絡
$git remote fetch
orginthis
也能夠加上-v選項(-v爲-verbose的縮寫,取首字母),顯示對應的克隆地址:url
添加遠程倉庫,能夠指定一個簡單的名字,以便未來引用,運行git remote add [shortname] [url]:spa
使用git remote show [remote-name]查看某個遠程倉庫的詳細信息:ci
它告訴咱們,運行git push時缺省推送的分支是什麼(最後兩行)。它還顯示了有哪些遠程分支尚未同步到本地(第六行的caching分支),哪些已同步到本地的遠端分支在遠程服務器上已被刪除(Stale tracking branches下面的兩個分支),以及運行git pull時將自動合併哪些分支(前4行中列出的issues和master分支)。開發
遠程倉庫的刪除和重命名rem
能夠用git remote rename命令修改某個遠程倉庫的簡短名稱,好比想把AA改爲BB,能夠這麼運行:
$git remote AA BB
$git remote
origin
BB
移除遠程倉庫git remote rm命令:
$git remote rm BB
$git remote
origin
二:git fetch
從遠程倉庫抓取數據,使用git fetch [remote-name][branch-name]。
三:git pull
從遠程倉庫分支中得到更新,git push [remote-name] [branch-name],pull命令包含兩個操做:從遠端分支中取出改動,而後合併到當前分支中。至關於git fetch+ git merge。
當git clone以後,直接git pull它會自動匹配一個正確的remote url,由於在.git/config文件裏配置了[branch "master"]下面的內容:
$git pull
四:git push
若是把本地的master分支推送到origin服務器上(),能夠運行下面命令:推送數據到遠程倉庫使用git push [remote-name] [branch-name],
$git push origin master
只有在所克隆的服務器上有寫權限,或者同一時刻沒有其餘人在推數據,這條命令纔會如期完成任務。若是你在推數據前,已經有其餘人推送了若干更新,那你的推送操做就會被駁回。你必須先把他們的更新抓取到本地,併到本身的項目中,而後才能夠再次推送。
五:git reset
使用git reset撤銷改動,git reset HEAD^刪除最近的commit,選項:
--mixed staged與commited都會清除,可是modified不會清除
--hard modified,staged,commited都會清除
--soft commited被清除,modified,staged還在
reset是將當前head的內容重置,不留任何痕跡。
Sets the current head to the specified commit and optionally resets the index and working tree to match。
git reset --hard HEAD~4
會將最新的4次提交所有重置,就像沒有提交過同樣。
使用--mixed選項,若是你不添加選項,默認使用的是--mixed選項:
這裏的「changed but not updated」表示文件被modify,可是沒有stage,你有兩個選擇,一個是stage,git add<file>...,另外一個選擇是撤銷此次修改git checkout --<file>...
使用--hard選項:
使用--soft選項:
這裏的「Changes to be committed」表示已經modified而且stage,可是沒有commit,你可使用git reset HEAD <file>...進行unstage,或者使用git commit進行commit。
有的時候想要修改提交信息使用git commit --amend
此命令將使用當前的暫存區快照提交。若是剛纔提交完沒有做任何改動,直接運行此命令的話,至關於有機會從新編輯提交說明,而所提交的文件快照和以前的同樣。
這裏將以前的commit信息「second」改成「this is second commit」。
在git中,除非你運行了git-gc --prune,不然歷史是永遠不會被擦除的,你能夠隨意恢復到任何歷史狀態。下面是一個恢復被git-reset --hard擦除了的commit的例子:
使用git-reflog查看歷史:
六:git revert
git revert只是修改了commit,修改後再次提交。
git revert與git reset的區別: