比如想pull 最新代码, 又不想加新commit, 或者为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作,或者希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:
git stash git pull #or do something else git stash pop前面我们知道了git stash和git stash pop的用法,但是可能我们由于切换了不同的分支,执行了多次git stash操作,我们想回到之前某次stash的状态,这时可以使用git stash apply 指令,在执行git stash apply之前可能我们忘记了是回到哪一次状态,可以通过
git stash list例如我们想回到之前倒数第三次stash的状态,可以执行如下指令
git stash apply stash@{2}有时由于本地修改了某些配置,或者修改了某些文件,无法直接切换branch, 则可以利用git stash,如下:
git stash git checkout branch如从master分支,创建一个dev分支
git checkout -b dev创建完可以查看一下,分支已经切换到dev
git branch 输出* dev master把新建的分支push到远端
git push origin dev拉取远端分支
git pull输出
There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details. git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/<branch> dev经过验证,当前的分支并没有和本地分支关联,根据提示进行下一步: 关联,建立本地到上游(远端)仓的链接 –这样代码才能提交上去
git branch --set-upstream-to=origin/dev再次拉取 验证
git pull遴选即把已经提交的commit, 从一个分支放到另一个分支
git cherry-pick例如,在master分支上做了一个commit ( 91e567e71ff5ae6bacb6b9e8e83a49bb8918c4dc [91e567e] ) , 如何把它放到本地refactor分支上 首先切换到refactor
git checkout refactor然后使用git cherry-pick <commit id>将该提交放到本地refactor分支上
git cherry-pick 91e567e如果顺利则正常提交 如果在cherry-pick的过程中出现了冲突,与处理普通冲突一样,先处理冲突,再提交。 处理冲突的过程,下一节详细讲如何解决文件冲突:
git status # 看哪些文件出现冲突 both modified: app/models/user.rb vim app/models/user.rb # 手动解决它。 git add app/models/user.rb git commit -c <新的commit号码>直接用命令行的同学可以通过git status查看哪些文件出现冲突,然后修改冲突文件,再重新git add该文件
git add path/filename即可继续commit
git commit -c <新的commit号码>用eclipse的同学可以右键有冲突标记的文件,选Git->Git Add to Git index->commit
用SourceTree选中冲突文件,右键标记冲突已解决即可正常提交了。
这里推荐一款图形化界面工具SourceTree,工作中常用这个软件,利用SourceTree+命令行的方式也能轻松的解决遇到的大多数问题。自认为并不是什么Git达人,各种指令也常常记不住,虽然通常图形化工具有其局限性,但SourceTree同时也提供命令行的方式,所以通常一般情况我都用图形化界面解决,方便快捷,不用记住太多指令,实在没招就用SourceTree的命令行来解决。 命令行模式按钮在如图红框的地方
解决办法如下: 输入
git remote rm origin git remote add origin git@github.com:djqiang/gitdemo.git