.gitignore文件忽略的内容不生效问题解决
原因
gitignore文件只能作用于Untracked Files的文件,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件),如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的。
解决
使用 git rm -r --cached . 从 Git 的数据库中删除对于该文件的追踪,执行这一步之后,所有的代码都会变为未提交状态(提交标识为红色)
把对应的规则写入.gitignore,让忽略真正生效;
提交代码
git add .
git commit
git push
git回滚历史提交,丢弃新提交
要在Git中回滚到特定的提交,可以使用git reset命令。以下是如何操作的步骤:
找到要回滚到的提交的哈希值。可以使用git log查看提交历史。
使用git reset命令回滚到该提交。有三种模式可以使用:--soft,--mixed,--hard。
--soft:回滚到某个版本,保留工作目录和暂存区的内容。
--mixed:回滚到某个版本,保留工作目录,但是清空暂存区。
--hard:回滚到某个版本,工作目录和暂存区都会被清空。
如果需要将回滚后的状态推送到远程仓库,并且你不打算合并这些更改,可以使用git push --force。
例子:
1、查看仓库提交历史
git log
2、对于想要回滚到的提交获取commit的hash值,使用 --hard 进行回退
git reset --hard 3b5341f459f6724bb2fd021a0a5f2110c4781b19
3、强制推送远程,删除此提交之后的所有提交
git push --force
请注意,使用git push --force可能会覆盖其他开发者的工作,因此在执行这个操作前最好与团队成员沟通。
Git回退到之前版本的两种方法reset、revert
一、回退(reset)
1、原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,例:当前有三个版本(版本一、版本二、 版本三)目前正处于版本三,我想要回退到版本一,那么版本二是无法保留的。
2、适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
3、操作:
git reset --hard
目标版本号
git add . & git commit -m '提交的操作说明'
git push
(此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧,用 git push -f 强制推上去)
二、反做(revert)
1、原理:git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。
2、适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
3、操作:
git revert -n 版本号(例:版本二的版本号)
git add . & git commit -m '提交的操作说明'
git push
浙公网安备 33010602011771号