解决 git 推送大仓库失败问题

该脚本检查本地分支是否已存在于远程仓库,然后计算需推送的提交数,并按批处理推送,以解决大型仓库的推送问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# Adjust the following variables as necessary
REMOTE=origin
BRANCH=$(git rev-parse --abbrev-ref HEAD)
BATCH_SIZE=100

# check if the branch exists on the remote
if git show-ref --quiet --verify refs/remotes/$REMOTE/$BRANCH; then
    # if so, only push the commits that are not on the remote already
    range=$REMOTE/$BRANCH..HEAD
else
    # else push all the commits
    range=HEAD
fi
# count the number of commits to push
n=$(git log --first-parent --format=format:x $range | wc -l)

# push each batch
for i in $(seq $n -$BATCH_SIZE 1); do
    # get the hash of the commit to push
    h=$(git log --first-parent --reverse --format=format:%H --skip $i -n1)
    echo "Pushing $h..."
    git push $REMOTE $h:refs/heads/$BRANCH
done
# push the final partial batch
git push $REMOTE HEAD:refs/heads/$BRANCH

批量推送 git 提交信息,解决 git 仓库过大问题,

### 如何在 IntelliJ IDEA 中解决 Git 推送失败问题并重推送代码 当遇到 Git 推送失败的情况,在 IntelliJ IDEA 中可以通过一系列操作来解决问题并成功推送代码。 #### 检查本地仓库状态 确保本地仓库是最的,这可以减少冲突的可能性。通过同步工作树和索引,使本地副本与远程存储保持一致[^1]: ```bash git fetch --all ``` 如果存在未拉取的更改,则先将其合并到当前分支中: ```bash git pull origin main ``` #### 解决冲突 如果有冲突发生,IDEA 将提示用户解决这些冲突。双击左侧边栏中的 Conflicts 数字,进入差异查看器界面,按照指示逐一处理冲突文件。完成之后标记为已解决,并提交解决方案。 #### 配置全局用户名和邮箱地址 有时推送失败是因为缺少必要的身份验证信息。可以在设置里指定全局用户名以及电子邮件地址以供 Git 使用[^3]: ```bash git config --global user.name "Your Name" git config --global user.email you@example.com ``` #### 更 Git 路径配置 确认已经正确设置了 Git 的可执行文件路径。前往 `File` -> `Settings...` -> `Version Control` -> `Git` ,点击右侧上方输入框旁边的浏览按钮选择合适的 Git 安装位置。 #### 处理权限不足的问题 对于因 SSH 密钥或 HTTPS 凭证过期等原因造成的认证错误,需更相应的凭证缓存或者生成的密钥对上传至服务器端。如果是私有仓库访问受限的话,请联系管理员获取适当权限。 #### 执行强制推送(谨慎) 仅当确实知道这样做不会破坏其他人的工作时才考虑使用此选项。通常情况下应该避免强行覆盖历史记录,除非是在非常特殊的情况下并且团队成员都同意这么做[^4]: ```bash git push --force-with-lease ``` 经过上述步骤调整后尝试再次发起推送请求,正常来说应当能够顺利完成整个过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远方的飞猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值