git 为什么我每次尝试修改/提交我的个人回购时都会遇到分支冲突?

8nuwlpux  于 2023-04-04  发布在  Git
关注(0)|答案(1)|浏览(146)

这是我第一次使用GitHub,过去的几天我一直在尝试了解基本的git功能和命令。目前,我的仓库是私有的-我是唯一一个使用它并推送提交的人。但是,我想确保我没有创建一个混乱的网络,如果我决定公开它,会给自己或其他人带来麻烦。
在第一次提交成功后,我意识到我在代码中留下了一个代理API密钥,所以我做了一个编辑(我以为只在本地,但也许我在远程也做了),很快就收到了一个冲突消息:

Your branch and 'origin/main' have diverged, 
and have 1 and 1 different commits each, respectively

在阅读SO以解决冲突后,由于更改微不足道,并且我无法找到更好的替代方案,我决定用途:

git fetch origin
git reset --hard origin/main

在通过main更新了我的本地备份之后,我仍然想从我的提交历史中完全删除敏感信息。所以我再次进行了本地更改以删除敏感代码&因为我的仓库只包含初始提交,我暂存了初始提交文件并试图修改它:git commit --amend --no-edit
然而,在运行git status之后,我又收到了同样的冲突消息。起初我以为git总是显示冲突,直到提交被推送,文件变成最新的,但我不相信是这样的,我不确定我做错了什么。
再次去SO后,我遇到了多个帖子沿着如下:Local branch and remote branch have diverged after amending commit
所以,按照我使用的帖子:git push --force-with-lease。这解决了合并冲突,并正确地修改了对初始提交的更改,但现在我的存储库显示:

"My real name" and "my GitHub username" initial commit                        "xxxxxx" 2 hours ago

在我第一次提交后(重置前),我用git config --local user.email修改了我的用户邮箱配置(但没有修改我的名字)。然而,我希望修改后的提交只显示更新后的作者。
好吧,这并没有发生,所以我花了更多的时间研究,并根据类似问题的建议,使用:git commit --amend --no-edit --reset-author,再一次,现在“你的分支和主分支已经分叉了”。我花了很长时间浏览了大量的帖子和文章,我不明白为什么我总是得到这个合并冲突错误。没有其他人编辑过任何文件,在更新我的分支之后,我在输入这些命令之前没有做任何事情,但每次,我都以冲突告终?

n6lpvg4x

n6lpvg4x1#

我的old answer建议使用一个rebase来避免强制推送,但在你的例子中,你实际上需要git push --强制你的本地修正提交。
这将允许所述修改的提交 * 替换 * 远程提交,确保敏感信息(几乎)从远程Git存储库中清除。
(“几乎”,因为gc不经常在GitHub存储库上运行,任何知道旧提交SHA1的人都可以从技术上获取它。但我怀疑这不是这里的问题)

相关问题