git常见问题及解决办法

526 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

GIT常见的问题分析

同一个工程下,大家共同开发,会出现很多GIT相关的问题,最近遇到多次这种情况,所以整理一下,分享解决方法。

git push origin HEAD:refs/for/远端分支出现远端拒绝

大部分情况的原因是本地代码太旧了,首先使用 git stash将自己本地的改变暂存在堆栈中,git stash成功后,使用git pull --rebase,重新拉取代码,rebase一下代码。拉取成功后,使用git stash pop,将堆栈中暂存的代码弹出,此时可以合并代码了,合并完代码再讲自己的代码推送到远端git push origin HEAD:refs/for/远端分支

git push时,出现missing Change-Id in commit message footer

首先尝试根据错误提示进行修复,若提示gitdir=$(git rev-parse --git-dir)

该问题的本质原因是最近的一次提交,缺少Change-id,正常的一次提交是一个commit-id,对应一次change-id

导致这种情况的通常原因是本地有更改,但是未提交,当本地需要重新修改代码时,想进行git pull --rebase时,出现自动merge的情况,当在命令行中,点击:wq或:q后导致的,解决办法是:

  • git log查看一下,最近的提交情况,找到缺少change-id的提交记录,然后手动git reset --soft [commit-id], 此处的commit-id是缺少change-id的前一次提交;
  • git log,再查看一下当前的提交记录,确保每次提交都有一个commit-idchange-id
  • git commit --amend, 继续基于本地的改动进行提交;
  • git push origin HEAD:refs/for/远端分支;

当本地代码成功push,gerrit上出现cannot merge,通常的解决办法

  • 本地使用git pull --rebase, 此时若显示merge confict这些关键字,从提示的地方,看是哪个文件存在冲突(也可用git status查看)
  • 找到存在的冲突文件后,VSCode或其他IDE打开,通过存在冲突的地方,鼠标点击选择Accept both,还是Accept current等,根据实际需求选择后,保存;
  • git add [冲突文件]
  • git rebase --continue
  • 若rebase成功,可以git log查看下提交改动
  • git commit --amend, 基于本地最新的一次提交,进行追加改动
  • git push origin HEAD:refs/for/远端分支