1.git工作原理

.git是什么

开源的分布式版本控制系统,去中心化。
大小项目均可以灵活管理,参与开发人员比较灵活。

Linux的代码管理工具BitKeeper不适合开源社区,故Torvalds推出了GIT。

.工作架构

git 工作原理 shell应用

.工作流程图

git 工作原理 shell应用

.分支管理
    git的分支只要不提交合并,对别人没任何影响。
    svn的分支是完整的目录,你改了svn的分支,所有人的分支都随你而变。
    分支命名:git的分支在本地和远程是自由匹配,而svn是全局统一的。
.内部数据存储方式
        git为元数据统一存储管理,老vcs是以文件为按文件来存储。

.Git与GitHub关系
        git是一个分布式的版本控制系统,最初应用在Linux源码协同开发中。
        GitHub是一个基于git的项目托管平台,提供web界面,你可以在上面创建资源仓库来存放你的项目。
        现已发展成为全球最大的开源社区平台。

 2.git shell  应用

         .git 安装
一般的linux发行套件都是自带git工具的,如果不带,则使用yum安装即可

yum install git

..git配置
    用户名和邮箱配置,方便与仓库间做交互时候标记来源,即自报家门
    以下为全局配置,所有用户均使用该配置
git config --global user.name "YourName"     //zhuzhu
git config --global user.email "YourEmail"    //[email protected]

.git命令
       创建本地版本库
       选择自己的linux主机
cd ~   //进入到家目录
mkdir local_repo     //创建文件夹,作为版本仓库的目标目录
git init            //创建本地git仓库

目录变化如图:

git 工作原理 shell应用

git 工作原理 shell应用

创建待git管理的文件
cd ~/local_repo
touch input.txt

echo "i am a new file,i will be added to git vcs" > input.txt

将文件添加到代码库
git add input.txt               //提交文件到缓存区

git commit -m "first commit"    //提交文件到本地库

git 工作原理 shell应用

查看版本仓库状态

git status

假如提交完成后,没有任何修改,则结果如图:

git 工作原理 shell应用

假如我修改了之前的input.txt

git 工作原理 shell应用

git 工作原理 shell应用

查看具体的差异点
比较-工作区和缓存区差异

git diff working_file_path

git 工作原理 shell应用

比较缓存区和本地仓库差异

git 工作原理 shell应用

比较工作区和本地仓库差异

git 工作原理 shell应用

提交之前的变化文档input.txt  
git add input.txt

git commit -m "second commit" input.txt

再次使用git diff检查文件的三个不同状态之间的差异

git 工作原理 shell应用

*注意:在没有提交前,所有的改动都只是在工作目录中进行,只有再次提交后,工作目录、缓冲区、本地仓库才能同步

git日志查看

git log

git 工作原理 shell应用

查看两个版本之间文件的差异

git 工作原理 shell应用

查看所有分支的所有操作记录

git 工作原理 shell应用

版本回退

回退到当前版本的上一个版本

git reset --hard HEAD^    //回到当前版本的上一个版本
git reset --hard [email protected]{1}   //回退到指定版本


撤销修改
应用场景1:工作空间文件已修改,但没有add到缓存区。
手动修改还原已修改的文件。

用版本库中的复原工作区的文件

git checkout -- filepath     //将版本库中的指定文件覆盖掉工作区中的指定文件

git 工作原理 shell应用

应用场景2:工作空间已修改,已添加到缓存区,但没有添加到版本库
git reset HEAD filepath    //将该filepath对应的缓存区的内容删除掉,对工作区没有任何改动。相当于回到了应用场景1。
再按场景1的方式修改,即手动修改或者是git checkout -- filepath

 
应用场景3:工作空间已修改,已添加到缓存区,且已添加到版本库,但没有推到远程库。
直接按版本回退来处理即可,
git reset --hard HEAD^    //回到当前版本的上一个版本
git reset --hard [email protected]{1}   //回退到指定版本

应用场景4:rm -rf误删除某文件的还原
rm -rf filepath    //在工作目录中误删除某个文件
git checkout -- filepath    //将版本库中的文件还原到误删除的文件中。


应用场景5:git rm误删除git文件的还原,并没有commit提交
git reset HEAD filepath   //将该文件在缓存区的删除操作移除掉

git checkout -- filepath    //从缓存区移除对该文件操作后,即可按应用场景4的操作还原。

远程仓库操作
        关联远程仓库
            在gitlab web界面中,创建自己的项目。

执行本地到远程的关联
模板: git remote add 远程仓库名 [url]
例子:git remote add origin http://xxx

查看远程仓库信息
git remote      //显示远程仓库的关联分支

git remote -v   //查看远程仓库的详细信息,显示对远程的操作权限, fetch和push权限

从远程库同步数据到本地库(协作开发)
git clone [url]

本例:git clone http://xxx

今天先更到这,有时间继续补更










相关文章:

  • 2021-10-23
  • 2022-01-14
  • 2021-11-21
  • 2021-04-24
  • 2021-08-16
  • 2021-12-14
  • 2021-03-31
  • 2022-03-05
猜你喜欢
  • 2021-09-14
  • 2021-10-30
  • 2022-12-23
  • 2021-12-13
  • 2021-05-01
相关资源
相似解决方案