Git学习笔记
Git笔记
1. Git是什么
Git是世界上最先进的分布式版本控制系统
- Workspace:工作区
- Index/Stage:暂存区
- Repository:仓库区(本地仓库)
- Remote:远程仓库
2. 基本操作
文件操作:
创建文件:touch 文件名.*
删除文件:rm 文件名
创建文件夹:mkdir 文件夹名
删除文件夹:rm -r 文件夹名
查看文件:cat 文件名
恢复历史版本
git reset --hard HEAD^ 退回上一个版本
git reset --hard HEAD^^ 退回上上一个版本
git reset --hard HEAD^^^ 退回上上上一个版本
git reset --hard HEAD~100 退回第100个版本
git reset --hard 版本号 退回版本号版本 (查看版本号:git reflog)
修改相关:
放弃历史暂存区文件修改:git restor
git chackout -- 文件名
初始化仓库:git init
添加文件到暂存区 :git add filename
提交文件到仓库:git commit filename
查看暂存区当前状态:git status
查看暂存区文件修改情况:git diff
查看最新文件修改记录:git log 简洁呈现:git log -pretty=online
查看所有文件更改记录:git reflog
清空暂存区:git rm --cached filename;
re ./git/index 暂存区文件
分支:
创建分支:git branch [分支名称]
查看分支:git branch -v
切换分支:git checkout [分支名称]
合并分支:git merge [要求被合并的分支名称]
3. 错误异常
1.
执行:git push origin master
报错:error: src refspec master does not match any,远程仓库与本地仓库的之前版本不匹配
解决方法:临时撤销上一次对仓库的修改之后,把远程仓库同步下来,之后再与本机仓库结合,目的就是
:使两端仓库匹配
2.
执行:git push origin master
报错: Updating an unborn branch with changes added to the index.(使用添加到索引中的更改更新未生成的分支。) 其实也就是本地的仓库没有提交,无法推送远程仓库
解决方法:git commit -m "m"//作用:把暂存区的操作同步到本地的仓库中
时光穿梭机(版本恢复)
命令说明:
- git rm 删除工作区文件,并且把删除记录提交到暂存区(git rm[name]相当于:rm + git add[name] )
- rm 删除工作区的文件。
恢复的方法:
- git checkout filename
- 对于checkout的说明:
- 情况一:当暂存区存在该文件时,将暂存区文件恢复到工作区
- 情况二:当暂存区未存在该文件时,将版本库中的文件恢复到工作区
- 对于checkout的说明:
- git reset HEAD^ filename
- 作用:把上一个版本filename拉取到暂存区,此时工作区并不存在该文件,但是当我们执行git checkout filename 文件在工作区就会被找到!
尝试情况:
-
情况一:提交到暂存区,不提交文件库
- rm删除,工作区文件不存在,暂存区没有同步最新情况
- 恢复
- git checkout filename 工作区恢复成功,来源暂存区,可以看出add是把文件放到暂存区中
- git reset HEAD filename 恢复失败(考虑原因是因为没有可恢复的仓库)
- 恢复
- git rm删除,工作区文件不存在,暂存区更新删除记录,即暂存区该文件执行删除操作
- git checkout filename 恢复失败(原因:因为给git rm=rm + add,此时暂存区该文件的记录,因此checkout会尝试在暂存区中恢复文件到工作区,但是暂存区中只有该文件的删除行为,而文件却不存在,因此恢复失败)
- git reset HEAD^ – filename恢复成功
- rm删除,工作区文件不存在,暂存区没有同步最新情况
-
情况二:提交到暂存区,提交到文件库
- rm删除,工作区文件不存在,暂存区存在
- git checkout filename 工作区恢复成功
- git reset HEAD^ – filename恢复成功
- git rm删除
- git checkout — filename 恢复失败
- git reset HEAD^ filename 此时操作区并未恢复文件 当在执行:git checkout filename 此时,工作区恢复了该文件
- rm删除,工作区文件不存在,暂存区存在