又是很久没有更新博客了,最近突发神经想要学习一下git,在此总结一些学习的东西
git是具有纪录 历次代码改动 和 协同合作 两个功能的 分布式版本控制系统,主要分为 工作区、暂存区、当前分支、远程分支 四部分
安装git
1  | sudo apt-get install git  | 
配置git
1  | git config --global user.name "lixinyao"  | 
git初始化
将一个目录变为git可管理的目录
1  | git init  | 
将文件提交并提交到repository
git add将文件添加到暂存区,git commit将暂存区的内容提交到当前分支
1  | git add <文件名>  | 
查看repository的状态
1  | git status  | 
查看文件的区别,修改的内容
1  | git diff  | 
查看历次版本修改
1  | git log --pretty=oneline  | 
HEAD
在git里,HEAD指向当前版本,HEAD^指向上个版本,HEAD~100指向前100的版本
版本回退
回退到上个版本
1  | git reset --hard HEAD^  | 
查看自己的历史命令,找commit id
1  | git reflog  | 
撤销工作区的修改(未add到暂存区)
用版本库的文件覆盖到工作区
1  | git checkout -- filename  | 
将暂存区的内容撤销回工作区,再撤销工作区内容
1  | git reset HEAD filename  | 
如不但内容修改错误,还提交到了repository,版本回退即可
版本库删除文件
版本库删除文件后,还需提交
1  | git rm filename  | 
创建SSH key
1  | ssh -keygen -t rsa -C "slylixinyao.gmail.com"  | 
id_rsa是私钥,id_rsa.pub是公钥。登陆Github,打开account settings的SSH key页面,黏贴id_rsa.pub的内容,就可以有权限将电脑的文件推送到远程仓库了
创建远程仓库
在Github里先创建一个repo,比如lixinyao.github.io,再将本地的仓库添加到远程。在本地目录下执行
1  | git remote add origin git@git.com:lixinyao/lixinyao.github.io.git  | 
将本地内容推送到远程
第一次推送要加-u,以后就不用了
1  | git push -u origin master  | 
从远程库克隆
1  | git clone git@github.com:lixinyao/lixinyao.github.io.git  | 
创建dev分支并切换到dev
1  | git branch dev  | 
git branch查看所有分支,当前分支在前面标注*
合并分支到当前分支
1  | git merge dev  | 
删除分支
1  | git branch -d dev  | 
有冲突无法快速合并的情况先解决冲突
查看分支的合并情况
1  | git log --graph --pretty=oneline -abbrev-commit  | 
分支管理
使用fast forward模式合并分支,在删除分支后就会丢掉分支信息,可以禁用fast forward
1  | git merge --no-ff -m "merge with no-ff" dev  | 
合并后用git log查看分支历史
1  | git log --graph --pretty=oneline --abbrev-commit  | 
储藏现场工作
假如工作进行到一半,不能提交,但是需先解决bug,可先储藏现在的工作现场
1  | git stash  | 
查看储藏的工作现场
1  | git stash list  | 
恢复工作现场,stash内容不删除,需用gis stash drop删除
1  | git stash apply  | 
恢复的同时删除stash
1  | git stash pop  | 
恢复指定的stash
1  | git stash apply stash@{0}  | 
强行删除分支
1  | git branch -D test  | 
查看远程仓库信息
1  | git remote -v  | 
推送到dev分支
1  | git push origin dev  | 
将最新的提交从远程上抓去下来
1  | git pull  | 
在本地创建和远程分支对应的分支
1  | git checkout -b branch-name origin/branch-name  | 
建立本地分支和远程分支的链接
1  | git branch --set-upstream branch-name origin/branch-name  | 
标签管理
创建标签和查看标签的命令
1  | git tag <name>  | 
删除标签
1  | git tag -d v0.1  | 
推送标签到远程
1  | git push origin v1.0  | 
一次推送所有未推送的标签
1  | git push origin --tags  | 
删除远程标签
1  | git push origin :refs/tags/<tagname>  | 
博客已经从jekyll迁移到hexo
原来的博客主题比较简陋,再加上jekyll访问速度较慢,今天把它迁移到了hexo,第一感觉是由原先的简陋变成了简洁,而且本地编译好后速度快很多。下面是每次推送到GitHub的代码:
1  | cd lixinyao.github.io  | 
2021年1月3日更新
1  | cd lixinyao.github.io  | 
另外还要更新图床
1  | cd blogpictures  |