.git瘦身——删除github仓库中的提交历史记录
当提交太多次数之后,.git文件就会变得特别大,即使在.gitignore中设置了一些不需要同步的文件类型。这时如果确认不需要回退,可以将.git问价初始化为一开始的样子以减少空间的占用。
主要的思路是首先复制目标分支到一个新的分支,删除旧的分支后将复制的分支名修改为原来的名称。以删除main主分支的历史记录为例:
# 切换到一个脱离主分支的另外一条全新主分支,不用太在意叫什么,因为后面还会修改分支名称
git checkout --orphan new_branch
# 暂存所有改动过的文件,内容为当前旧分支的最新版本所有文件
git add -A
#提交更改
git commit -am "commit message"
#删除原始主分支
git branch -D main
#将当前分支重命名为 main
git branch -m main
#最后,强制更新您的存储库
git push -f origin main
强制覆盖本地仓库
当本地和github上的仓库冲突的时候,且确认本地的仓库需要更新为远端仓库,此时如果本地和远端有冲突,如何强制覆盖本地仓库?
要强制覆盖本地的git冲突,可以按照以下步骤进行操作:
-
首先,确认您当前的工作区是干净的。可以使用
git status
命令来查看工作区的状态,确保没有未提交的更改。如果有未提交的更改,可以使用git stash
命令将其暂存起来。 -
在确认工作区干净后,可以使用
git fetch
命令从远程仓库获取最新的代码。 -
使用
git reset –hard origin/branch_name
命令将本地分支与远程分支进行强制同步,其中branch_name
是需要同步的分支名称,如main
分支。这个命令的作用是将本地分支的指针指向远程分支的最新提交。 -
如果步骤3还没有解决冲突,可以使用
git clean -f
命令清空工作区的文件。 -
最后,使用
git pull
命令来拉取最新的代码并合并到本地分支。
需要注意的是,强制覆盖本地的git冲突将会丢失本地的所有修改,包括未提交的更改。因此,在执行这个操作之前,请确保已经备份了重要的更改。同时也要谨慎操作,避免造成不可逆的损失。