1.如何将代码会滚到某个提交之前
在GitHub上将代码回滚到之前的版本,可以通过Git命令行实现。以下是几种常用的方法来实现回滚:
方法一:使用 git revert
git revert
会生成一个新的提交,这个提交会撤销之前的某个提交的更改。这样你的提交历史是完整的,能够保留所有更改记录。
-
找到你要回滚到的提交ID
git log
-
使用
git revert
撤销到指定的提交:git revert <commit_id>
这会生成一个新的提交来撤销指定的提交。
方法二:使用 git reset
git reset
可以将分支重置到某个特定的提交。注意,git reset
有三种模式:--soft
、--mixed
和 --hard
。
--soft
:只移动 HEAD,不改变暂存区和工作目录。--mixed
:移动 HEAD 和暂存区,不改变工作目录。--hard
:移动 HEAD、暂存区和工作目录(完全回滚)。
使用 --hard
模式重置:
-
找到你要回滚到的提交ID:
git log
-
制代码
git reset --hard <commit_id>
-
强制推送更改到远程仓库(这会覆盖远程仓库的历史):
git push origin master --force
注意: 使用
--force
选项时要非常小心,因为这会覆盖远程仓库的历史,可能会影响其他协作开发者。
方法三:使用 git checkout
和 git commit
如果你想将工作目录回滚到某个特定提交并生成一个新的提交:
-
找到你要回滚到的提交ID:
git log
-
使用
git checkout
检出到指定的提交:git checkout <commit_id>
-
创建一个新的分支(可选):
git checkout -b new-branch
-
将当前状态提交为一个新的提交:
git commit -m "Revert to previous commit"
-
推送到远程仓库:
git push origin new-branch
方法四:使用GitHub界面创建回滚PR
-
在GitHub仓库的"Commits"页面找到你想回滚到的提交。
-
点击提交的哈希值,进入提交详情页面。
-
点击 "Browse files" 查看该提交的文件状态。
-
点击 "Create new branch" 创建一个新的分支基于这个提交。(或者在"find or create a branch" 框里直接输入一个新名字如03,回车,就会自动新建一个 03 分支,该分支就能包括该提交节点上之前的所有内容了)
-
在新分支上进行必要的更改,然后创建一个Pull Request,将新分支合并到主分支。试了这种直接合并方式不行,会提示"There isn't anything to compare. main is up to date with all commits from 03 . Try switching the base for your comparison."
解决:将仓库先克隆到本地,把分支03的内容也拉取到本地,在本地把内容复制到main,然后再提交,推送到github。
因为对于github基于谁建立分支,各种关系还不太理解,就先用这种麻烦点的方式。
补充:创建分支的时候,会显示该分支来自于哪里。
通过这些方法,你可以将代码回滚到之前的版本。如果你在任何一步遇到问题或需要进一步的帮助,请随时告诉我!
----方法一二三都没有试过,方法四试过可以。
2. tortoisegit小乌龟切换分支
从右键菜单可以看出当前分支。
- 创建和切换本地分支
可以使用"切换/检出"命令
切换/检出 窗口
前面带remote的是远端分支,例如选择"remotes/origin/0708"后,因为本地有该分支,会自动一个本地分支"0708",
创建完成后,就可以切换本地分支了。
- 克隆仓库后,远端新建分支,
需要用到同步功能,找到"更新远端",即可