Q
我的开发工作都在 master 分支上做的,master 分支有很多的开发的时候产生的临时文件。我想清空 master 分支的历史记录。并且只保留 README.md 和 main.py
A
你可以通过以下步骤清空 master
分支的历史记录,只保留 README.md
和 main.py
文件:
步骤 1: 创建一个干净的分支
首先,确保你在 master
分支,并提交所有未保存的工作。
git checkout master
git add .
git commit -m "Save all work before cleaning history"
步骤 2: 创建一个新的空分支
接下来,创建一个新的空分支来开始清理历史。
git checkout --orphan clean-branch
--orphan
创建一个没有历史记录的分支。
步骤 3: 移除所有文件并保留需要的文件
现在删除所有文件,但保留 README.md
和 main.py
。
git rm -rf .
git checkout master -- README.md main.py
这会删除项目中的所有文件,然后从 master
分支中恢复 README.md
和 main.py
。
步骤 4: 提交新的分支
然后提交这些更改。
git add README.md main.py
git commit -m "Clean history, only keep README.md and main.py"
步骤 5: 强制更新 master 分支
接下来,将这个新的干净分支强制推送到 master
分支,替换它的历史记录。
git checkout master
git reset --hard clean-branch
git branch -D clean-branch
步骤 6: 强制推送到远程仓库
如果你需要将清理后的 master
分支推送到远程仓库,你需要使用 --force
参数。
git push origin master --force
这样,历史记录将被清空,只保留 README.md
和 main.py
文件。
注意
- 强制推送会影响其他开发人员的本地仓库,他们可能需要重新克隆项目。
- 请谨慎使用,因为一旦推送到远程仓库,历史记录将无法恢复。