git常用指令及常见错误解决方法

git stash 暂存当前正在进行的工作

比如想pull 最新代码, 又不想加新commit, 或者为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作,或者希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:

git stash
git pull #or do something else
git stash pop

git stash apply 应用某次stash的内容

git stash apply stash@{n}

前面我们知道了git stash和git stash pop的用法,但是可能我们由于切换了不同的分支,执行了多次git stash操作,我们想回到之前某次stash的状态,这时可以使用git stash apply 指令,在执行git stash apply之前可能我们忘记了是回到哪一次状态,可以通过

git stash list


例如我们想回到之前倒数第三次stash的状态,可以执行如下指令

git stash apply stash@{2}

git checkout 切换分支

git checkout branch

有时由于本地修改了某些配置,或者修改了某些文件,无法直接切换branch, 则可以利用git stash,如下:

git stash
git checkout branch

git checkout -b 从已有的分支创建新的分支

如从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

git cherry-pick 遴选

遴选即把已经提交的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,工作中常用这个软件,利用SourceTree+命令行的方式也能轻松的解决遇到的大多数问题。自认为并不是什么Git达人,各种指令也常常记不住,虽然通常图形化工具有其局限性,但SourceTree同时也提供命令行的方式,所以通常一般情况我都用图形化界面解决,方便快捷,不用记住太多指令,实在没招就用SourceTree的命令行来解决。
命令行模式按钮在如图红框的地方

错误提示:fatal: remote origin already exists

解决办法如下:
输入

git remote rm origin
git remote add origin git@github.com:djqiang/gitdemo.git
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值