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"//作用:把暂存区的操作同步到本地的仓库中

时光穿梭机(版本恢复)

https://github.com/ymyguang/Code-Note/blob/master/%E6%9D%82%E8%AE%B0/img/Git%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/image-20200304155405798.png

命令说明:
  • git rm 删除工作区文件,并且把删除记录提交到暂存区(git rm[name]相当于:rm + git add[name] )
  • rm 删除工作区的文件。
恢复的方法:
  • git checkout filename
    • 对于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删除,工作区文件不存在,暂存区存在
      • git checkout filename 工作区恢复成功
      • git reset HEAD^ – filename恢复成功
    • git rm删除
      • git checkout — filename 恢复失败
      • git reset HEAD^ filename 此时操作区并未恢复文件 当在执行:git checkout filename 此时,工作区恢复了该文件
posted @ 2020-03-04 16:07  ymyguang  阅读(344)  评论(0编辑  收藏  举报