【轉】GIT常見問題和操做及feth和pull的區別

如下內容來自: http://blog.microsuncn.com/?p=1978
  • 恢復丟失的版本

丟失版本最多見的問題就是 好比使用了 git reset –hard HEAD^ 之類的操做,結果發現丟棄的版本還想恢復回來,可是已經沒有任何分支可以reference到這個commit了。幸運的是,git 對各個分支的head還有一份log記錄叫作reflog,你能夠在.git/logs/refs/heads/ 目錄下看到它們。 經過 git reflog 能夠顯示變動歷史。使用相似 master@{1} master@{「2 days ago」}之類的格式,就能索引到你想要的commit。例如對應於git reset –hard HEAD^ 使用 git reset –hard HEAD@{1}便可恢復到reset以前的commit上。git

  • 出現 * (no branch)的處理

若是當前正工做在 (no branch)上:
$ git checkout -b working,就會把(no branch)上的東西checkout到working分支
若是不當心從(no branch)branch切換到其餘分支了,用git log不能查找到(no branch)的信息,不要擔憂,先用git reflog查到(no branch)的commit,而後:
$ git checkout -b backup commit安全

  • Git push,merge,pull,fetch,rebase各自在什麼狀況下使用

Git push:用本地的refs更新遠程的refs。好比從遠程的git repository中clone了一個副本,在此基礎上作了一些修改,而後用git push將你的修改更新到遠程,前提是要有遠程的寫權限。fetch

Git merge:合併不一樣的分支,詳細看git merge 合併分支spa

Git pull:從另外一個repository中fetch而且merge到一個本地分支,好比從遠程的git repository中clone了一個副本,過了一段時間,遠程的版本可能已經更新,用git pull將遠程的更新fetch而且merge到當前分支。blog

Git fetch:詳細看,git fetch 從另外一個repository中下載objects and refs索引

Git rebase:詳細看,git-rebase 跟上游分支同步get

 

如下內容來自:http://www.tech126.com/git-fetch-pull/同步

Git中從遠程的分支獲取最新的版本到本地有這樣2個命令:

1. git fetch:至關因而從遠程獲取最新版本到本地,不會自動merge
    
git fetch origin master
git log -p master..origin/master
git merge origin/master


    以上命令的含義:
   首先從遠程的origin的master主分支下載最新的版本到origin/master分支上
   而後比較本地的master分支和origin/master分支的差異
   最後進行合併

   上述過程其實能夠用如下更清晰的方式來進行:
   
git fetch origin master:tmp
git diff tmp 
git merge tmp

    
    從遠程獲取最新的版本到本地的test分支上
   以後再進行比較合併

2. git pull:至關因而從遠程獲取最新版本並merge到本地
   
git pull origin master


    上述命令其實至關於git fetch 和 git merge
    在實際使用中,git fetch更安全一些
   由於在merge前,咱們能夠查看更新狀況,而後再決定是否合併
it

相關文章
相關標籤/搜索