git 使用技巧大全
2015-08-16 00:00
197 查看
摘要: 向远程仓库pull一个项目,提示和本地文件有冲突,需要合并才能进行后面的操作,于是这时候 ours和theirs这两个操作就派上用场了
提示各位亲,如果你不幸看到了这篇挫文,看了还是没有解决自己Git的问题,可以直接发私信联系我哦,我会第一时间想办法帮你解决~~
向远程仓库pull一个项目,提示和本地文件有冲突,需要合并才能进行后面的操作,于是这时候 ours和theirs这两个操作就派上用场了
另外一种方法,我们不能丢弃本地修改,因为其中的某些内容的确是我们需要的,此时需要对unmerged的文件进行手动修改(手动修改的意思是打开这个文件,“手动”修改),删掉其中冲突的部分,然后运行如下命令
于是
或者:
这个时候git命令行中分枝状态变成了 master | MERGING,现在:
就ok啦~~~
还有,如果我们觉得合并以后的文件内容比价混乱,想要废弃这次合并,回到合并之前的状态,那么可以运行如下命令:
2、当远程文件比本地文件要少,但是并没有冲突的时候,直接git pull会直接删除本地在远程上面没有的文件。
,解决办法是,使用如下命令建立连接:
这样就将当前分支与远程 origin仓库的dev分支建立了连接。
在本地git push代码的时候提示需要先pull,于是pull ,git 的命令行窗口的分支名字于是变成了master | MERGING,一看这不是我以前遇到的冲突吗?翻到这篇文章,不假思索的就执行了
,这下完了,把本地写的代码都删掉了。。。
于是继续找方法,发现还有 git reflog这个命令,
然后出现了第一次commit的id,这下真的是太好了
这样就恢复文件了。
###强制推送
强制推送会将远程仓库替换成本地仓库,请谨慎操作
提示各位亲,如果你不幸看到了这篇挫文,看了还是没有解决自己Git的问题,可以直接发私信联系我哦,我会第一时间想办法帮你解决~~
向远程仓库pull一个项目,提示和本地文件有冲突,需要合并才能进行后面的操作,于是这时候 ours和theirs这两个操作就派上用场了
$ git checkout --ours . 保留自己原来的版本, 抛弃远程pull下来的版本(的所有有冲突的文件) ,或者: $ git checkout --ours 文件名1 文件名2 这样只针对部分文件。 $ git checkout --theirs . 保留远程的版本,抛弃自己本地的版本
###解决冲突的终极办法
发现又一个解决方案,因为如果按照上面的方法去做的话,会发现现在的分支还是master | MERGING 这种状态,执行如下命令可以完全丢弃本地的修改:$ git reset --hard origin/master
另外一种方法,我们不能丢弃本地修改,因为其中的某些内容的确是我们需要的,此时需要对unmerged的文件进行手动修改(手动修改的意思是打开这个文件,“手动”修改),删掉其中冲突的部分,然后运行如下命令
$ git add filename $ git commit -m "message"
###master | MERGING解决办法
情况:远程只有一个readme.md文件,本地没有,本地只有项目的初始代码,这样push的时候肯定是失败的,因为会提示你:你的操作被拒绝,因为远程有些工作你没有,这通常是由于另外一个仓库push所致,你应该先合并远程的改变然后才能push你的代码。于是
git pull(已经绑定默认远程仓库的情况)
或者:
git pull origin master
这个时候git命令行中分枝状态变成了 master | MERGING,现在:
git add . git commint -m "merge with remote"
就ok啦~~~
还有,如果我们觉得合并以后的文件内容比价混乱,想要废弃这次合并,回到合并之前的状态,那么可以运行如下命令:
$:git reset --hard HEAD
###注意的地方
1、当删除本地文件并同时需要删除远程文件的时候,直接删除,然后 git add,git commit ,git push就可以把远程的文件删掉了。2、当远程文件比本地文件要少,但是并没有冲突的时候,直接git pull会直接删除本地在远程上面没有的文件。
###pull失败
pull失败有很多原因,有一种是因为没有与远程分支建立连接,比如,出现错误如下:fatal:No remote reposiatory specified.please,specify either a URL or a remote name from which new revisions should be fetched.
,解决办法是,使用如下命令建立连接:
$ git branch --set-upstream dev origin/dev
这样就将当前分支与远程 origin仓库的dev分支建立了连接。
###更新-git真不会用啊
今天做一个web app的demo,然后下班之后想传到osc git上面去。于是在osc git 创建了仓库web-app,但是在创建的同时还自动创建了其他的一些文件,比如.gitignore,licence,当时没有体会到这个会引发一个问题。在本地git push代码的时候提示需要先pull,于是pull ,git 的命令行窗口的分支名字于是变成了master | MERGING,一看这不是我以前遇到的冲突吗?翻到这篇文章,不假思索的就执行了
$ git reset --hard origin/master
,这下完了,把本地写的代码都删掉了。。。
于是继续找方法,发现还有 git reflog这个命令,
git reflog
然后出现了第一次commit的id,这下真的是太好了
git reset id
这样就恢复文件了。
###修改远程仓库的路径
有时候配置远程仓库的时候,把路径写错了,修改办法有三种:1. 修改命令 git remte origin set- 2.先删后加 git remote rm origin git remote add origin git@github.com:Liutos/foobar.git 3. 直接修改config文件
###强制推送
git push osc master -f
强制推送会将远程仓库替换成本地仓库,请谨慎操作
相关文章推荐
- Linux里如何查找文件内容
- 关于单循环打印99乘法表
- Drools之Eclipse插件安装
- Mybatis 使用(一)
- 关于SWT的开发
- MyEclipse快捷键问题
- 关于SWT开发的一个坑——Invalid thread access
- Glib实例学习(0)开始
- Glib实例学习(1)单链表
- Glib实例学习(2)双链表
- Glib实例学习(3)哈希表
- Glib实例学习(4)动态数组
- Glib实例学习(5)平衡二叉树
- Glib实例学习(6)双端队列
- Glib实例学习(7)关系/元组
- Glib实例学习(8)系列一(完)
- 吉他 c大调第一把位
- 15个必须知道的 Chrome 开发技巧
- eclipse控制台不显示打印信息的处理方法
- JsonUtil-本人原创