Git--使用4

一: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"]下面的內容:


  1. git處於master這個branch下時,默認的remote就是origin
  2. 當在master這個branch下使用指定remote和merge的git pull時,使用默認的remote和merge

$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的區別:

  • git reset是還原到指定的版本上,這將扔掉指定版本以後的版本
  • git revert是提交一個新的版本將須要revert的版本的內容再反向修改回去,版本會遞增,不影響以前提交的內容

相關文章
相關標籤/搜索