Git使用中的问题汇总(不定时更新...)

1. 由于上传的文件太大导致push失败的问题

  • 来源
    在git管理中,不小心把数据文件(大于100M)也放在了git文件夹中,并且已经commit了,进行push时就会失败。
  • 解决方法:
    删除带有大文件的commit版本,也就是Git 删除具体某个提交commit的方法。但这个方法有风险,它在最后使用的语句是
git push origin master –-force

这可能会导致你原先的commit记录全部被覆盖掉,就只剩下你当前本地库的,上次push之后到这次push之间的commit记录,甚至,可能就只剩下唯一一个commit记录了,前面的都丢失了。(别问我咋知道的,惨痛的经历。。。)

  • 你以为就给你剩一个commit就结束了,too young too simple,问题才刚刚开始。。。
1.1 问题刚刚开始

前面使用了

git rebase -i  commit_id

这时,你会发现,本来git的界面后面都是显示(master)分支的,这下显示了一个莫名其妙的分支,图我已经失去了,但记忆深刻,变成了(mastet | rebase-i 2/2),就是下图这个位置,这里代表你正在使用的分支:
在这里插入图片描述
这就很不懂了,我捣鼓半天,也也能把这个分支弄明白,要是有知道的同学,还麻烦告知一声,那咋办呢。

1.2 简单粗暴没有用

我就简单暴力的,直接把当前的.git文件夹删掉了,重新初始化git init,然后再重新和远程库进行连接

git remote add origin http://xxx

没有错误提示,似乎看到了胜利的希望,然后我就add,成功,我commit,成功,我push,成…成傻逼了:
在这里插入图片描述
这也看不懂啊,看这个提示,在push之前,先pull,好嘞,咱来pull。

1.3 提示都是骗人的

在这里插入图片描述
我听它的,来pull,结果告诉我当前分支没有正在tracking的分支,也就是说,我本地连个树枝都没有,你远程那颗大树想靠过来都没法靠啊,不过这里又有一句提示了:想要tracking当前分支,就用下面这个语句,行,紧跟提示步伐。
在这里插入图片描述
用了那个莫名其妙的语句,果然是成功track了,似乎可以push了,然…而,好吧,我再pull。
在这里插入图片描述
刚才跟我说没有树枝,现在告诉我该树枝拒绝接受外来不相关人员。。。去查了一下,可以强行放行,下面语句:

git pull origin master --allow-unrelated-histories

看到这一大堆跳动的字符,真开心,没报错就是好的。

1.4 胜利就在前方

上面执行完后,最后一句说automatic merge failed,我慌了,我滴老天爷啊,求放过。我小心翼翼的尝试一下pull,自己来merge,提示:
在这里插入图片描述
行吧,感觉这一大圈下来,是git溜我呢,查了一下,说这就是本地还没commit文件,那我前面push失败,是哪来的commit文件,好吧,1234,再来一次

在这里插入图片描述

哇撒,成成功了,这下可以放心的去继续修改代码了。这一场战役over。

1.5 历史遗留问题

虽然问题暂时解决了,中间还是有几个不明白地方,比如

  • rebase到底怎么什么用处,使用场景?
  • 本地库/远程库,本地分支/远程分支概念界限不清

零散问题

  1. add file时出现fatal: Not a git repository (or any of the parent directories): .git错误
      原因是没有进行git init,导致没有生成.git隐藏文件夹。

  2. 新建分支时,出现fatal: Not a valid object name: 'master’错误
      原因是没有提交一个对象,要先经过add``commit等操作后才会真正建立master分支,此时才可以建立其他分支。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
$ git push origin branchname
在本地仓库提交后推送到远程仓库
作者:Cloud_9527
链接:https://www.jianshu.com/p/0995b062396c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  1. 在将本地分支推送到远程库时,出现fatal: TaskCanceledException encountered
      原因未知,执行下列语句可以解决:
$ git config --global credential.helper manager
  1. 在git commit 编辑title和description后,按Esc键后未推出编辑器

今天用git commit -m “注释”提交的时候,注释写错了。
首先 使用 git commit --amend 命令,(修改最近一次提交的注释信息),会进入到vim 编辑器,然后 你会发现编辑器里你怎么输入都没反应,这是因为vim处在不可编辑状态,按下字母键 c,此时进入编辑状态,可以开始修改注释信息了。
在然后 你会发现你怎么都退出不了,回到shell了,然后操作如下: ESC --》 退出编辑状态;接着 连续按两次大写字母键 Z,接着你会惊喜的发现,终于保存好退出来了!
windows 系统 ,亲测有效!!拿走不谢!
来源:月下小狸123的博客园

4.2 commit补充:在windows下的commit默认编辑器是,是TM啥啊,我也不知道,但是,打开Git CMD通过下面语句将其改为vim

$ git config --global core.editor vim,

以后就不会编辑后不知道咋退出啦。

  1. git提示modified:xxx(modified content, untracted content)
    原因:目录没有被跟踪;
    解决:删除xxx目录下的.git文件夹即可继续操作

  2. pull时提示The authenticity of host ‘github.com (xx.xx.xx.xx)’ can’t be estabilished
    因为默认是用HTTPS连接远程库和本地库,但git的连接方式有两种,还可以用ssh连接,我就手欠的试了一下ssh连接方式
    在这里插入图片描述
    右上角切换连接方式(Use HTTPS)

就会出现以下错误

The authenticity of host ‘github.com (52.xx.xxx.119)’ can’t be established.RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? //yes
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.

解决方案:需要进行git ssh 配置,登录github,进入要pull的项目中的setting,点击Deploy keys,将本地的ssh 公钥添加进去,即可。
现在知道这是干嘛的了,so,以后还是老老实实用HTTPS吧。

  1. git 进行remote add时,提示 fatal: remote origin already exists

解决:先进行 git remote rm origin,再添加即可

  1. push时提示:
Fatal: TaskCanceledException encountered.
  • 在本次操作中,可能是包含大文件导致的

  • 先进行以下操作

git config --global credential.helper manager
  1. push时提示:You are not currently on a branch
    解决办法:git checkout master

  2. 如何删除已经commit的版本中间某个特定版本

参考这篇博文Git 删除具体某个提交commit的方法

猜你喜欢

转载自blog.csdn.net/qq_41059320/article/details/83650719
今日推荐