【转】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

相关文章
相关标签/搜索