使用git本地库

git是一个版本控制工具,在电脑不联网的情况下,可以查询到你以前不同的版本
GitHub是一个网站,你可以把每次修改的代码提交到github
而git可以创建本地仓库,也可以使用远程仓库,而github就是git的远程仓库。
我们使用一下git,
创建本地git仓库和向仓库中增加文件
第一步:设置用户名和邮箱
git config --global user.name yangzhenxu
git config --global user.email [email protected]
第二步:查询设置是否成功
git config user.name
git config user.email
为什么要设置呢??
这样才容易区分是哪个用户提交的Git版本,git config 后面接的是–global参数,这表示你的机器上所有的Git仓库都会使用这个配置,但你也可以对不同的仓库指定不同的用户名和邮箱。
第三步:创建一个空目录,并把它设置为git仓库。
也就是你在空目录里打开命令提示符
git init即可,在该目录下生成.git文件夹
第四步:使用git命令
我们在这个文件夹下建立一个.txt文件 hello.txt
1)用git status命令查看
使用git本地库
翻译一下:没有被提交过的,但是目前可以用git add提交
2)我们把kello.txt提交到仓库去
git add hello.txt 该命令无任何显示,说明成功
3)git commit命令
使用git本地库
-m后面输入的是本次提交的版本说明,可以输入任意内容,但需要说明的是,最好写有意义的说明,便于以后查看。一个文件被改变,插入零行,删除零行。
4)再查看版本库状态
使用git本地库
怎么把一个错误创建的仓库删掉
错误把桌面设置为一个git仓库(最简单办法直接删掉.git文件即可)
本地仓库管理详解
1)git status查看工作区的状态
当我们向hello.txt插入一行东西再执行
然后提交
在添加一行再提交
2)git log命令
回滚到之前的版本:head表示当前版本(命令git reset --hard HEAD~1000)表示当前版本的前一百个版本。
这是因为cmd控制台中换行符默认是 ^ ,而不是\ ,所以它的 more?的意思是问你下一行是否需要再输入,而 ^ 符号就被当做换行符而被 git 命令忽略掉了。
解决方法有如下几种:
方法一:加引号:git reset --hard “HEAD^”
方法二:加一个^:git reset --hard HEAD^^
方法三:换成~:git reset --hard HEAD~ 或者 git reset --hard HEAD~1
~ 后面的数字表示回退几次提交(上面1次为例)
当然还可以换成 git bash,powershell 等就不会出现这种问题了
回滚一个版本后:在git log
此时我们回到了之前的版本,但是新版本你会发现没有了,此时我们怎么回到那个新的版本?
此时我们又可以根据commit id来加载到指定版本。
其实使用commid id可以到达以前任何你有过的版本。
用法:git reset --hard “commit id”
3)git reflog命令,是用来记录你每一次执行的命令,你找不到commit id可以来这里找。
仔细理解一下这张图
使用git本地库

工作区里有好多的文件,通过git add命令将一个文件加入到了index(暂存区),其实在版本库里的暂存区已经有了该文件,而master中还没有。我们看到了 HEAD指向的是master所以说,版本我们指的是已经在master里的。也就是经过git commit命令后的才能在master里找到。
第一步:修改
第二步:git add
第三步:git log(没有发现新版本)
第四步:git commit
第五步:git log(发现了新版本)
注意:当对工作区新增或修改的文件执行 “git add” 命令时,暂存区的目录树被更新,同时工作区新增或修改的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
当执行提交操作 “git commit” 时,暂存区的目录树写到版本库的对象库(objects)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。(如上图)
当执行 “git reset HEAD” 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。 当执行 "git rm --cached " 命令时,会直接从暂存区删除文件,工作区则不做出改变。
当执行 “git checkout .” 或者 "git checkout – " 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
当执行 “git checkout HEAD .” 或者 "git checkout HEAD " 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
git的优点:
关于修改:因为Git跟踪管理的是我们每一次的修改(或操作)
例子1:
hello.txt新增一行
git add
hello.txt再新增一行
git commit
git log(此时第二次修改的并没有提交,提交的是第一次的add)
关于取消(撤消)修改:
你在提交之前发现,有错误,而又不想提交了
此时你有两个选择,一个用 git add 提交到暂存区,另一个是用git checkout可以丢弃工作区的修改。命令git checkout – hello.txt意思就是,把readme.txt文件在工作区的修改全部撤销,
修改工作区内容,未提交,git checkout – hello.txt即可
修改工作区内容,add了,没commit,先git reset HEAD hello.txt再git checkout – hello.txt
(这种方法没有试通,好像是参数问题,但是我们可以提交了 然后回滚到之前的一个版本)
修改工作区内容,提交到版本库了,用回滚回去呗,找到以前版本。
误删文件怎么办使用git本地库