丢失版本最多见的问题就是 好比使用了 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)上:
$ 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:用本地的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