Git超详细图文教程——本地托管,仓库创建,提交撤销,误删恢复
分布式管理虐杀集中式管理
-
在以前,代码都是通过集中式管理,大家从一个共享的或者说*服务器里下载下来项目,在各自的电脑上完成项目的各个部分,然后上传回*服务器,这样一来,就会产生很多的问题:比如同事之间代码版本不一致、文件过大效率低下,最后上传了还要主动整合项目等等;
-
而分布式管理就能很好的解决问题。分布式管理下每个人的电脑都像是一台*服务器,每个人的电脑上都有一个版本仓库,当然,为了方便所有项目参与者能在其他同事离线、请假不在、升仙~等等特殊情况下依然能够同步还在线并且活跃的项目参与者的版本和修改情况,git依然有一个用于管理项目的大的*服务器。首先git的分布式管理是允许并提供了仅上传修改部分文件的功能,同时能明显的却别项目参与者各自修改的部分!这样,A修改了什么B能清晰的看到,B修改了什么也能清晰的看到,他们上传项目时都是上传自己的修改部分,这样就可以良好的合并项目!所以,git是个非常好的代码托管工具,即使现在被微软收购了。
-
代码管理方式
这里的git仓库是网络中显示在其他用户面前的地方;暂存区是commit的目标;工作区是add的目标。有其他语言基础的同学,我喜欢将工作区解释为缓存区,类似于系统内存或者虚拟内存,存着数据等待着传到新的位置而修改,而暂存区我喜欢解释为最终管理器,所有的内容将通过这个管理器提交到服务器上,让内容呈现在用户面前,在网页上得以显示。
安装Git
配置信息
- 本地仓库用户信息配置
git config --global user.name "WytheO"
git config --global user.email "[email protected]"
- 查看本地配置信息
git config --list
上面的路径就是配置的环境信息,如果你使用vscode管理你的代码,那么需要安装vscode的相关git manager插件等;
git提交准备
- 准备一个用于测试的项目文件:
- 进入到当前文件夹下:可以选择在文件夹下直接git bash直接打开或者控制台cd 到目标目录下:
git提交到管理器、暂存区
- 初始化为项目仓库:
git init
然后你会发现文件夹下多了一些文件和文件夹:
这些文件就是记录了创建者配置的信息以及当前代码版本信息等;
git仓库创建好之后,文件夹内所有的修改与操作都会被git监听到,并与上一个版本进行对比取出差异文件。
- 提交我们的修改,修改前查看变化:
git status
git diff index.html # 查看修改信息,对于一些特殊的文件或者加密文件查看可能会出现异常,造成无法查看
git diff [...]
(可以跟文件名或者默认查看素有修改)示例:
修改前:
加入一行44444444:
- 将代码提交到缓存区管理器:
git add [path/file] # path/fiel 代表你要单独提交的文件
#git add index.html 注意一开始我路径截图里的文件,因为是当前目录下,所以不同添加路径
git add . #如果是“.” 代表默认提交所有修改文件
- 我们再查看一下管理器:
- 将修改提交到暂存区:
git commit -m "the first commit"
- 我们再查看一下管理器状态:
我们已经将修改后的文件提交到暂存区,那么现在开始,就会有一个index.html文件的版本号存在于刚才的隐藏文件.git的配置信息里。
如果我们有再次修改了index.html文件,那么git status
又能够查看到修改状态,又可以通过git commit [...]
命令提交,当然,这一次的版本和当一次的版本是不一样的。
提交错误,版本回退
- 查看历史版本:
git log #这个会进入到日志的文件里并处于命令模式,按i 进入insert编辑模式,Ecs后按shift+分号退出insert编辑模式,在命令模式按wq保存退出;
HEAD—>master:表示最近一次提交的修改和提交到哪个分支,这里我展示的提交到我的主分支的截图。
比如我这一次修改:
再比如我另一个项目里的版本历史:
- 版本回退:
git reflog #查看版本列表状态
git reset --hard [版本id值] #git reset --hard ae6d00b
git reset --hard HEAD^ #返回到当前版本的上一次版本号状态,一个“^”代表一个版本,HEAD是指向版本的指针。
文件误传,丢弃修改
- 如果在
git add
之前就进行了commit 会发生git status检查错误,或者滚啊力气发生错误异常清理了修改,仍然显示文件未提交的错误信息,那么我们需要通过一个命令来进行比对文件与管理器里版本是否一致; - 如果你不小心错误修改了文件又提交到了暂存区时,而需要丢弃工作区修改时,先
git reset HEAD [fiel]
进行回退版本,然后使用下面命令丢弃修改; - 如果提交了错误版本需要撤销本次提交时;
git checkout -- [文件名] #git checkout -- test.txt
如果发生commit后status仍然有修改信息,即发生了某些错误,致使管理器的修改信息没有被清空,那么使用上面的命令可以检查比对修改文件和commit文件,最终进行清理。
虽然管理器是清空了修改信息状态,但是文件是确确实实被修改了的,只是暂时屏蔽了本次提交的修改。如果有些文件不希望被提交上去,那么久果断丢弃提交吧。
文件删除与恢复,git误删恢复
- 我先增加一个test.txt并提交到版本管理器:
- 然后我将它删除:
git rm [file] #撤销、删除当前的修改操作
- 接着,使用版本控制命令回退文件:
git reset HEAD text.txt
这里注意回退时间。
这个的牛逼之处在于,就算你清空了回收站,貌似还能恢复被误删的文件!