Git 遇到的问题

rm 问题

对git本地仓库,使用rm而不是git rm删除一个文件A后,直接commit 和 push,远程仓库仍然有A。此时已经不能再执行git rm了,所以将删除动作添加到暂存区 git add .,然后再commit 和 push
操作过程

branch diverged

1
2
3
4
5
6
7
# 执行 git status 的结果
On branch master
Your branch and 'origin/master' have diverged,
and have 5 and 21 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)

nothing to commit, working tree clean

这发生在多人可能操作 master 分支的时候,我自己的分支提交完了,切换到master分支,要执行合并时,出现这个问题,并不是文件冲突的问题。按如下方法解决:

如果不需要保留本地的修改,只要执行下面两步:

1
2
git fetch origin
git reset --hard origin/master

当我们在本地提交到远程仓库的时候,如果遇到上述问题,我们可以首先使用如下命令:
1
2
3
4
git rebase origin/master
git pull --rebase
# 提交到远程仓库
git push origin master

一次合并冲突的解决

我在自己的分支me开发,主分支比我领先很多。有一次,我从git上下载了主分支的压缩包,然后手动覆盖了一部分文件以更新,这其实是不正确的操作。

第二天我先切换到主分支,更新到最新,然后切换到me分支,提交到远程后,合并主分支,结果出现的冲突比我自己修改的多很多,因为把我昨天手动覆盖的那些也包括了。这种情况下,只能手动解决冲突,但是大部分文件一定是用主分支,如果一个个打开会很麻烦。

用VSCode打开工程,分支管理里会显示文件冲突,对使用主分支版本的文件,右键选择就可以,而且能同时选多个文件。解决完之后,选择暂存文件,之后可以push了。

fatal: 无法访问 The requested URL returned error: 502

需要关闭代理软件

remote: error: cannot lock ref ‘refs/heads/feat/user’: ‘refs/heads/feat/user/interface’ exists; cannot create ‘refs/heads/feat/user’

push到了不存在的分支

使用VS Code git push报错:Missing or invalid credentials.Error: connect ECONNREFUSED /run/user/1000/vscode-git-ec01

image.png

解决:文件 —> 首选项 —> 搜索 git.auth,取消勾选后重新勾选,然后重启终端。