Git的拓展
为了维护版本信息,修改对应版本的具体内容,需要进入指定的版本下
一、广义下的git的使用
1、首先,确保目录干净,以下情况则说明目录干净
2、查看提交历史:git log(发现,共提交过三次)
3、恢复历史提交
恢复至最后一次提交的上一次提交(也即倒数第二次提交)
git reset --hard HEAD~
【注意】:以上命令会恢复至第一次修改,包括更早的版本内容,但是之后的却丢弃了,很难找到,所以不推荐使用,在公司企业中慎重使用!!
发现:恢复到倒数第二次提交后,最后提交的内容不见了,只保留了倒数第二次以及之前的提交,这种情况是不容接受的!!
解决办法:使用git checkout + id的方式(注意:使用git reset --hard HEAD~前拷贝一份,否则最后提交的那次log丢失,会影响这次操作!)
使用拷贝的内容后,检查发现如下(包含最后提交的内容):
然后,使用命令:git checkout + id,假设同上次恢复至倒数第二次,那只需执行:git checkout 35663c4bb1bd378bfd4684e55d3b6e0e304bcc57(对应倒数第二次提交的代码的id)
看似好像也没有最后一次提交的字样,但是仔细看,不难发现此时是在倒数第二次分支所对应位置(此时包含倒数第二次以及之前版本内容很理想),而非最初的主分支(master)
此时,只需要再切换至主分支,检查log就能发现,最后提交的内容是在的呢!!
(实际上,采用id回退至指定版本,git reset也可以,具体为:git reset --hard 35663c4bb1bd378bfd4684e55d3b6e0e304bcc57(对应倒数第二次提交的代码的id)【但强烈不推荐,慎用,甚至忽视此种用法】)
二、AS中git的用法
另外,在AS的Terminal中,亦可以采用git log查看提交历史,若出现冒号,则说明还未显示完全,可以使用回车或者↓,直至显示完全,也即出现(END)
此时,切换至英文输入法下,使用字母Q退出!!
以下是AS中使用的部分截图:
假设进入id为eb47aedf60ad49245f02c1b866d6128ce8b7c487对应的版本:
此时,不难发现,此时确实抵达指定id的版本下(包含该版本及之前的所有版本信息),但不容忽视的是,此时对应的HEAD,可以理解为头结点是指向这个指定id的,并不是指向master,所以它并不影响HEAD指向的主分支master的版本信息情况,以下是验证过程截图
出现了,切换到主分支,切换到主分支,发现最后一次提交的内容也有了,nice!!
三、补充
补充:提交到本地仓库的时候,准确是:git commit -m "提交信息"
但倘若是git commit直接回车,会进入vim,在vim的第一行键入“提交信息”(可以省略双引号)
切换到英文输入法,输入i或者insert,键入相关提交信息内容,然后切换到英文输入法,esc然后输入冒号,wq(表示保存修改并退出)
但若是不想保留当前在vim的编辑信息,可以使用q!(表示直接退出),此时对应的文件仍在暂存区,需要重新commit才能提交至本地仓库!
ls -al:查看隐藏目录
git diff:
git diff 命令,默认查看的就是 工作区 和 暂存区之间文件的差异
1.git diff : 查看工作区和暂存区之间所有的文件差异
2.git diff -- 文件名:查看具体某个文件 在工作区和暂存区之间的差异
3.git diff -- 文件名1 文件名2 文件名3:查看多个文件在工作区和暂存区之间的差异
【注意】:查看具体文件的时候 -- 和文件名 之间有一个 空格,文件名1 和 文件名2 和 文件名3之间也有空格
————————————————
原文链接(git diff部分):https://blog.csdn.net/qq_39505245/article/details/119899171
1.git remote -v : 显示所有远程仓库,这里 origin 为远程地址的别名
2 git remote show xx (xx为远程地址的别名) 显示某个远程仓库的信息
3、git branch -a :列出所有分支【包含本地和远程分支,而git branch仅可看本地分支,而git branch -r仅可看远程分支,可以认为是二者的结合】