Git备忘录
Posted CSU迦叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git备忘录相关的知识,希望对你有一定的参考价值。
目录
理论部分
集中式和分布式的本质区别是,用户本地是否有完整的版本控制历史,如果中央服务器宕机(没错,Git也有中央服务器,只不过不是必不可少),还能否回滚。
所有的版本控制系统都只能跟踪文本文件的变动,比如第x行多了一个y,但是对于二进制文件,并不知道具体变动,比如一张图片压缩以后大小减了,怎么变的就不清楚了。
操作部分
基本命令
要掌握工作区状态,可以用命令
git status
如果git status显示说有文件修改过,可以用命令
git diff filename
查看具体修改了啥。
想要查看修改历史,用命令
git log
发现输出的内容是按照时间倒序排列的
如果想要输出更简洁,可以加上参数
--pretty=oneline
前面的长长的黄色十六进制序列是commit id
如果想要回滚到上一个版本,也就是5846开头的
可以用命令
git reset --hard HEAD~1
HEAD表示当前版本,波浪线后面的数字表示上溯到之前的第多少个版本,是可变的
此时再查看版本历史
会发现最新的一个版本不见了,但是想要回去还是有办法,复制下commit id 的前几位,4b2d6
输入命令
git reset --hard 4b2d6
但是刚刚的commit id是由于命令行没关,直接复制得到的,如果已经关了,可以用查看命令历史的命令(git log是查看提交历史的命令)
git reflog
进阶命令
- 暂存区(stage/index)是Git相比于其他版本控制系统的一个特色,上文中提到的add命令是将工作区的内容提交到暂存区,必须指定是哪个文件,因为工作区可能修改了不知一个文件,还增加了文件;上文提到的commit命令是把暂存区的所有文件提交到分支,这可以不指定内容,因为暂存区就一个。所以往往是多个add命令后跟一个commit命令。
撤销修改使用命令
git checkout -- filename
此时这个文件可能有两种状态:(1)上一次commit之后的修改 (2)上一次add之后的修改
如果是前者,就恢复到分支的HEAD版本;如果是后者,就恢复到暂存区里的状态。
上面说的是用分支的HEAD版本或暂存区恢复工作区,下面说用分支的HEAD版本恢复暂存区。
git reset HEAD readme.txt
注意观察使用git reset HEAD readme.txt 前后的变化,前一个是提示暂存区有变化,即将提交到分支;后一个是提示工作区有变化,暂存区没有。
此时可以接着用git checkout -- readme.txt ,让恢复了的暂存区再来恢复工作区。
此时是2022年4月27日,距离廖雪峰老师写下Git教程不知过了几年,于是命令有了新的写法,如果要恢复工作区,也可以是
git restore readme.txt
如果要恢复暂存区,也可以是
git restore --staged readme.txt
远程仓库
已有本地仓库,再创建好远程仓库,进入本地仓库输入以下命令将二者进行关联
git remote add origin git@github.com:github-username/learngit.git
其中origin是远程库的名字
然后输入以下指令将本地仓库的master分支关联到远程的master分支,并将本地仓库的master分支内容推到远程仓库
git branch -M master
git push -u origin master
完成第二个指令的前提是github认证了本地的账号(搜索git SSH 密钥配置)
注意,参数 -u 只有第一次推送本地分支到远程分支才需要,以后不用。
但是上面的太过于繁琐,一般是在Github图形化界面中先创建远程仓库,再将其克隆到本地。创建好远程仓库以后,找到
复制下来,在git cmd 中进入想要的位置,输入
git clone git@github.com:github-username/gitskills.git
会发现.git文件夹和readme已经在了
注:以上内容是跟着廖雪峰老师博客学git使用的笔记,包括“git简介”“时光机穿梭”“远程仓库”三个部分,详见廖雪峰官网-Git教程
以上是关于Git备忘录的主要内容,如果未能解决你的问题,请参考以下文章