文章基于windows 10平台,主要是谬雪峰git学习笔记,梳理一下。
第一:安装git
首先,官网下载安装文件,初始化设置
默认已经注册了GitHub的账户,注册邮箱是star@169.com,昵称是star。
git config --global user.name "star"
git config --global user.email "star@169.com"
其中--global 是全局变量,此机器所有git仓库都应用同样的name和email。
第二:创建本地版本库
启用git bash
cd G:
mkdir gitstar
cd gitstar
git init
在G盘新建了个名字gitstar的文件夹,然后启用 git init命令,初始化gitstar文件夹,文件夹里新建了一个.git的文件,标志着创版本库/仓库,创建成功。
本地版本库的结构
第三:添加文件到本地版本库
A:readme.md 文件,作为项目的描述文件
B:项目文件,比如我们的项目文件夹名是moon,文件夹包含moon_1,moon_2,moon_3三个文件。
1、添加readme.md
【执行此操作,相当于将工作区的readme添加到版本库的暂存区stage】
git add readme.md
2、commit -m ”“
【执行此操作,即把已添加至暂存区的readme,提交到本地库特定的分支branch,并备注说明】
git commit -m "gitstar learn"
此两部操作以后,才完成文件提交流程;
此外可以多次add文件,然后给这批文件,统一 作一次commit。
3、应用 git status 语句查看版本库当前的信息。
git status
截图,可以看到moon这个文件夹下的所有文件都没有添加,git提示我们:先add,在commit
以下是关于add的几个操作区别:
================================================================
git add -u
这语句执行的对象是已跟踪【已add】的文件,包括被跟踪对象(被修改或者被删除)。
-u是-update的缩写。
既然跟踪了add对象的删除操作,那么执行git status 语句,会提示我们那些文件,在工作区被删除了。
我们可以通过对应的语句
1.” git checkout HEAD -- filename” 以提交到当前工作分支的文件为标准,恢复工作区被删除的文件。
2.” git checkout -- filename”以add到暂存区的文件为标准,恢复工作区被删除的文件。
1和2的区别在于,被add 的文件可以快过分支的文件,我们在不断更新代码
--------------------------------------------------------------------------------------------------------------
git add .
这句执行对象:被add文件的修改 + 新建文件【也就是没有被add的文件】
--------不会跟踪【已被add,且已被删除】的文件。
----------------------------------------------------------------------------------------------------------------
git add -A
这个语句相当于 以上两个语句的集合体。
跟踪已add文件的修改/删除操作,同时也可以执行新文件的添加操作。
==================================================================
4、执行git add -A操作
执行操作以后,提示工作取working tree clean
第四:管理修改
1.在工作区readme添加内容
hello git
2.比较git diff 、git diff --cached、git diff HEAD --
a、git diff :工作区和暂存区比较
b、git diff --cached :暂存区和最新本地版本库(当前分支)文件比较
【只在工作区修改readme文件,则此语句不显示修改内容】
c、git diff HEAD -- <PATH>.. :工作区和最新本地版本库(当前分支)文件比较
【如果工作区readme文件,没有被add,则此语句和git diff 呈现的结果相同,但比较对象不同,
此外】
3.撤销修改/恢复工作区删除
a、工作区readme被修改,没有add【没add自然没commit】
执行以下语句
git checkout -- readme.md
相当于以暂存区的文件为标准,撤销工作区的修改,或者工作文件被删除,可以恢复。
坑:git checkout -- readme.md 这--后必须空一格在写上文件名 readme.MD
b、工作区readme被修改,被add,但没被commit 到当前工作分支
执行以下语句
git checkou HEAD -- readme.md
相当于以当前工作分支的文件为标准,撤销工作区的修改,或者工作文件被删除,可以恢复。
坑:git checkout HEAD -- readme.md 必须指定撤销修改的文件名
以上语句等同于,git reset --hard HEAD,回滚当前分支
c、工作区readme被修改,被add,被commit
这情况下,只能回滚到上一个版本
git reset --hard HEAD^
git reset --hard commit id
当然我们也可以撤回回滚操作,只要先 git reflog 确认相对应的commit id,然后git reset --hard commit id
第五:版本库删除文件
工作区删除了readme,git status语句提示我们。
要在版本库删除,则执行两步:
git rm readme.md
git commit -m"del readme.md"
第六:对比修改的解释
仅以git diff 为例
git diff
输出以下
diff --git a/README.md b/README.md
index 45e6779..ed0bb69 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
# gitstar2
# 测试clone
+nihao 第二次测试
第一行: 表示对比 a/README.md【暂存区】,b/README.md是工作区
第二行:对比两个区域的哈希值,一个index区【此处是暂存区】45e6779,一个工作区ed0bb69
最后六位数表示对象模式,100644(普通文件,644权限)。
第三行:对比的两个文件,---index区域的【变动前】,+++本次提交的工作区的文件【变动后】。
第四行:@@ -1,2 +1,3 @@
-表示变动前,1表示第一行,2表示连续两行
+表示变动后,1表示第一行,3表示连续三行
第五行至以下:
+语句表示,变动的部分。