git常见问题总结

470 阅读1分钟

git 操作

1、本地建了一个分支znn,开发完之后,提交代码

git add .
git commit -m '注释'
git push

出现下面的问题,这个意思是:当前分支没有与远程分支关联。
因此导致了提交代码失败。

MacBook-Pro-5:web-crm znn$ git push
fatal: The current branch znn has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin znn

解决方案:
(1)直接 git push origin znn 推向制定的分支,最强暴的方法。
(2)正如上面所说关联远程分支。

git push --set-upstream origin znn
origin 是默认的远程版本库名称
这样关联有一个好处,以后就不用每次git push都用第(1)种方法。

2、本地仓库和远程仓库关联 git remote add origin 远程仓库链接地址 git push -u origin master

重要:第一次使用加上了 -u 参数,是推送内容并关联分支,之后推送直接使用git push即可,因为第一次已经将当前本地master分支和远程origin的master分支关联了。

3、git push错误failed to push some refs to的解决

在关联本地与远程时,两端都是有内容的,但是这两份内容并没有联系,当我们推送到远程或者从远程拉取内容时,都会有没有被跟踪的内容,于是你看git报的详细错误中总是会让你先拉取再推送,但是拉取总是失败。

对于error: failed to push some refsto‘远程仓库地址’ 1 使用如下命令 git pull --rebase origin master

2 然后再进行上传:

git push -u origin master

推送成功

4、git的冲突解决--git rebase之abort、continue、skip

执行完git pull --rebase之后如果有合并冲突,使用以下三种方式处理这些冲突:

git rebase --abort 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃;

git rebase --skip 则会将引起冲突的commits丢弃掉(慎用!!);

git rebase --continue 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。(fix conflicts and then run “git rebase --continue”)

对上述冲突的处理

1、使用 $git rebase --abort

执行之后,本地内容会回到提交之间的状态,也就是回到以前提交但没有pull是的状态,简单来说就是撤销rebase。

2、使用 $git rebase --skip

git rebase --skip 引起冲突的commits会被丢弃,对于本文应用的例子来说开发者A对c.sh文件的commit无效,开发者A自己修改的部分全部无效,因此,在使用skip时请慎重。

执行:$ vim c.sh

查看本地c.sh文件提交内容,展示如下图所示,执行语句之后开发者A的修改无效。

3、使用 $git rebase --continue

执行完$git pull --rebase 之后,本地如果产生冲突,手动解决冲突之后,用"git add"命令去更新这些内容的索引(index),然后只要执行:

$ git rebase --continue 就可以线性的连接本地分支与远程分支,无误之后就回退出,回到主分支上。

5、commit 退出

Esc键退出编辑模式,英文模式下输入 :wq ,然后回车(write and quit)。
   按 Esc 键退出编辑模式,大写英文模式下输入 ZZ,然后回车。
   
   ## 不保存并退出Esc 键退出编辑模式,英文模式下输入 :q!,然后回车