受欢迎的博客标签

git for Home Assistant

Published

git for Home Assistant

 

git commit 回退


弄清楚三个区


工作区(working tree): 本地编辑器 -you modify a file any time you make changes to it in your working directory 暂存区(index):git add操作后进入暂存区,可用git status查看 - 文件状态变为:Staged - it's staged when you move it to the staging area 本地仓库(repository):git commit 后进入本地仓库

git工作流程图
  
 

 

git add 回滚 (git回滚 git add . ,git回滚未提交commit)
git status
git reset
git commit 回滚)(git回滚已提交的commit)
revert vs reset
revert命令与reset命令不同,revert是生成一次新的commit冲抵原来的commit;
 reset直接删除某些commit的内容
在git使用中如果提交错误的代码至远程服务器,可以使用git revert 命令回滚单次commit并且不影响其他commit。
如果没有push上去,可以用git reset 本地回滚到之前的代码 如果push上去了,已经覆盖了线上的代码,就需要先用git revert + 版本号 或者 HEAD(回到上一个push的版本),将线上的代码回滚
reset
Git回滚代码到某个commit
git reset命令 1.git reset --mixed 版本号       暂存区(add/index区)和提交区(commit区)会回退到某个版本,但代码不改变。     2.git reset –soft + 版本号       提交区(commit区)会回退到某个版本,暂存区(add/index区)不会回退,代码不改变。差异存在暂存区,不轻易删除代码     3.git reset –hard + 版本号       暂存区(add/index区)和提交区(commit区)会回退到某个版本,代码会改变。 回退删除, 慎用,一不小心删除代码还不可逆


回退命令: 
$ git reset --hard HEAD^ 回退到上个版本 $ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前 $ git reset --hard commit_id 退到/进到 指定commit的sha码


step 1:使用git log命令,查看分支提交历史,确认需要回退的版本
commit 91aa1ce7e81586d84d9b8d47f064a0eae91ecb2d (HEAD -> main) Author: msly <[email protected]> Date: Thu Nov 17 23:50:01 2022 +0800 first commit commit 4e8c7b27284573efdf93e184c246b3010fc715ae Author: Your Name <[email protected]> Date: Thu Nov 17 23:35:36 2022 +0800 first commit
step 2 使用git reset --mixed commit_id命令,进行版本回退
git reset --mixed 592cc918b20be8d4af4bf4473c4cda9abc1df795 (暂存区(add/index区)和提交区(commit区)会回退到某个版本,但代码不改变。) git reset --hard 4e8c7b27284573efdf93e184c246b3010fc715
output
HEAD 现在位于 4e8c7b2 first commit


git reset --hard 48e9aad347d3060b386e9061548e2e422d91b28b
revert
git revert + 版本号 
      远程master和本地master都会回退到某个版本。暂存区(add/index区)和提交区(commit区)会回退到某个版本,代码会改变。
How to Fix gitignore Not Working
问题描述:
.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。
git上传的时候,我们已经将 xxx 文件添加到了.gitignore 中,但是在push 后,远程仓库还是会显示此文件
reason:
xxx 文件在前面已经被 git 跟踪,在这之后再添加到 .gitignore 中是无效的
Untracked
官方文档明确指出,.gitignore只对未跟踪(Untracked)的文件起作用!
什么叫未跟踪,新建一个文件,还未用git add .提交,文件还在 工作区(working tree): 本地编辑器 区
原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,
解决办法
在 .gitignore 中添加后,清除一下此文件的 git 缓存,git rm -r --cached 文件名, 然后再进行 commit和 push即可。
这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。


case 1:未提交成功的情况


step 1:查github,查到正常的那次体提交;然后回滚到正常的那次体提交
git reset --hard commit_id 


step 2:git清除本地缓存,让下一步修改 后的.gitignore文件生效
git rm -r --cached .
step 3:修改 .gitignore


解决方法: git清除本地缓存(改变成未track状态),然后再提交:- 我直接重新来了。搞定
[root@kevin ~]# git rm -r --cached . [root@kevin ~]# git add . [root@kevin ~]# git commit -m 'update .gitignore' [root@kevin ~]# git push -u origin master
清空本地缓存后提交的时候造成了大量的变更,就很烦
可以使用"git rm -r –cached directory"来删除缓冲


git
https git

Git仅跟踪指定的文件夹和文件

仅跟踪指定的文件夹和文件
如果跟踪src文件夹和pom.xml:
设置.gitignore文件

#忽略所有文件夹和文件,必须放在开头
/*
#排除src文件夹
!/src
#排除pom.xml文件
!/pom.xml 

 


useful links
https://zhuanlan.zhihu.com/p/585741907