文章目录
1、在指定提交记录上创建分支
git checkout -b dev <具体提交记录ID>
这个操作相当于git checkout -b dev
+ git reset --hard <具体提交ID>
2、提交更改到最新提交记录中
git commit --amend
,这个操作会把暂存区的改动附加到本地最新提交中,不会新增一条记录。但是,如果你目前本地最新的提交记录与远程仓库是同步的,你修改了本地的最新的一条提交记录,之后马上git push
是会失败的,因为与远程冲突了。
有冲突仍然想要推送远程仓库可以用 git push -f
。
-f 或 --force 选项进行强制推送会让本地仓库的历史记录完全覆盖远程仓库的历史。
3、后悔药:强制回退到某个具体历史提交记录,并强制推送到远程仓库
强制回退到某个具体历史提交记录,即要删除它之后的所有提交,可以用 git reset
命令。
- 首先找到目标提交记录的ID,可以在github远程仓库的历史提交记录查看,也可以用git工具或者IDE提供的工具
git reset --hard <目标提交的ID>
- 强制推送到远程仓库(如果你想)
git push origin <分支名称> -f
。
-f 或 --force 命令进行强制推送会让本地仓库的历史记录完全覆盖远程仓库的历史。
4、- -squash紧密合并,合并分支,但只新增一条提交记录(不保留分支的记录)
如果你不想在 master 分支上merge dev时保留 dev 分支的历史记录
可以使用 git merge --squash <dev>
,解决冲突后(如果有),手动提交本地仓库git commit -m "< >"
。这样,只会在本地的 master 分支上新增一条提交记录。
注意这样会丢失dev分支的历史记录,如果dev的历史无关紧要,则可以这样做
5、移除某些文件的跟踪
不想删除文件,只是想Git再跟踪这些文件
- 停止跟踪文件,但保留在工作目录中:
git rm --cached <file_name>
- 停止跟踪整个目录,
git rm --cached -r <folder_name>
- 然后还要提交并推送
git commit -m "" git push