github回退
目录
🤖 硬回退-不带历史 #
目标: 将本地和远程仓库(假设是 main
分支)都强制回退到 0100870311c7c11e1f793a426bca3d6ea79cbd84
这个提交,并丢弃之后的所有历史。
请在你的项目目录下打开 Git Bash 或终端,执行以下命令:
-
确保你在要操作的分支上 (假设是
main
):git checkout main
(如果你的主分支是
master
,请替换main
为master
) -
硬重置本地分支到目标提交:
git reset --hard 0100870311c7c11e1f793a426bca3d6ea79cbd84
- 警告: 这个命令会丢弃你本地
main
分支上在0100870
之后的所有提交,并且会清空你工作区和暂存区中所有未提交的更改。请确保没有需要保留的未提交内容。
- 警告: 这个命令会丢弃你本地
-
强制推送到远程仓库:
git push --force origin main
- (同样,如果你的主分支是
master
,请替换main
) - 警告: 这个命令会强制覆盖远程
origin
仓库的main
分支历史。如果其他人也基于这个分支工作,他们的历史也会被覆盖,可能导致他们丢失工作。请确保这是你想要的结果,并且已经和协作者沟通好(如果需要)。
- (同样,如果你的主分支是
总结关键点:
git reset --hard <commit-hash>
: 将本地分支和工作区强制设置为指定提交的状态。git push --force origin <branch-name>
: 将本地分支的状态强制推送到远程分支,覆盖远程历史。
执行完这些命令后,你的本地和远程 main
分支都应该指向 0100870
这个提交了。
🤖 软回退-带历史 #
好的,如果你想撤销后续提交所带来的更改,但保留这些提交的历史记录(即不删除它们,而是添加一个新的提交来抵消它们的效果),你应该使用 git revert
命令。
这种方式更安全,尤其是在多人协作的分支上,因为它不会改变已有的提交历史,而是添加新的提交来达到回退的效果。
目标: 创建一个新的提交,这个新提交的内容状态与 0100870311c7c11e1f793a426bca3d6ea79cbd84
这个提交一致,但保留 0100870
之后的所有提交记录。
请在你的项目目录下打开 Git Bash 或终端,执行以下命令:
-
确保你在要操作的分支上 (假设是
main
):git checkout main
(如果你的主分支是
master
,请替换main
为master
) -
找出需要 revert 的提交范围: 我们需要 revert 从
0100870
(不包括) 到当前main
分支顶端 (包括) 的所有提交。 -
执行 revert 操作:
git revert --no-commit 0100870..HEAD
0100870..HEAD
: 这个范围表示从0100870
提交之后(不包含0100870
本身)一直到HEAD
(当前分支的最新提交)的所有提交。--no-commit
: 这个选项很重要。它会计算出撤销这一系列提交所需的所有更改,并将这些更改应用到你的工作区和暂存区,但不会自动创建一个或多个 revert commit。这允许我们将所有撤销操作合并到一个单独的提交中。
-
检查状态并解决冲突 (如果需要):
- 运行
git status
。你会看到很多文件被修改了(这些就是 revert 操作带来的反向更改)。 - 重要: 如果在 revert 过程中出现冲突 (git 会提示),你需要手动解决这些冲突。编辑冲突文件,移除
<<<<<<<
,=======
,>>>>>>>
标记,保留你想要的内容。解决后,使用git add <冲突文件>
将它们标记为已解决。
- 运行
-
创建总的 Revert 提交:
- 在所有更改都已暂存(并且冲突已解决)后,创建一个新的提交来记录这次"回退"操作:
git commit -m "Revert to state of commit 0100870"
- 你可以修改引号内的提交信息,使其更清晰地描述这次操作。
- 在所有更改都已暂存(并且冲突已解决)后,创建一个新的提交来记录这次"回退"操作:
-
推送到远程仓库:
git push origin main
- (同样,如果你的主分支是
master
,请替换main
) - 这次不需要
--force
,因为我们是添加了一个新的提交,而不是改写历史。这是一个常规的推送。
- (同样,如果你的主分支是
总结关键点:
git revert <commit-range>
: 创建新的提交来抵消指定范围内提交所做的更改。--no-commit
: 阻止git revert
自动为每个被 revert 的提交创建单独的 commit,允许我们将所有更改合并到一个 commit 中。- 保留历史: 原始的提交(
0100870
之后的那些)仍然存在于历史记录中,但它们引入的更改被新创建的 revert commit 抵消了。 - 安全推送: 使用常规的
git push
,对协作者更友好。
执行完这些命令后,你的本地和远程 main
分支的文件状态将回到 0100870
时的状态,但 Git 历史中会包含 0100870
之后的所有提交以及一个最终的 revert 提交。
✨ 修改提交默认账号 #
==默认使用某个账号提交某个仓库==
git config --global credential.https://github.com/3377/cf-rss.git.username 3377