您的位置:首页 > 其它

git 使用技巧大全

2015-08-16 00:00 197 查看
摘要: 向远程仓库pull一个项目,提示和本地文件有冲突,需要合并才能进行后面的操作,于是这时候 ours和theirs这两个操作就派上用场了

提示各位亲,如果你不幸看到了这篇挫文,看了还是没有解决自己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

强制推送会将远程仓库替换成本地仓库,请谨慎操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: