git简易入门教学

本博客仅作个人学习记录,也希望本博客对大家也有所帮助。

1.git整体架构

下面这张图是从网上搜来的,感谢原作者!
在这里插入图片描述
工作区:也就是所看到的目录
暂存区:工作区的修改可以存储到暂存区,修改可以撤回。
仓库区:将修改好的文件提交到仓库区后不能再更改,只能提交新版本覆盖。


2.git常用命令

命令名称命令作用
git add 文件将指定文件从工作区上传到暂存区
git add .将所有文件从工作区上传到暂存区
git rm 文件将文件从工作区和暂存区暂存区删除
git commit -m “日志信息” 文件名将指定文件从工作暂存区上传到本地库。如果没有文件名,则上传所有文件
git push 主机名 分支名将本地库信息上传到远程库。主机名默认为origin
git status查看工作区和暂存区的状况

2.1建立本地库

建立本地库有两种方法
1.git init
用来初始化当前目录,作为本地仓库。当前目录下会产生一个.git隐藏文件夹,用来记录该仓库的信息。
2.git init 初始化一个空的新项目,然后通过 git remote add origin 远程仓库地址 和某个远程git仓库关联起来。
在这里插入图片描述

2.git clone 远程库地址
拷贝一个远程git仓库到本地。除了进行git init的操作外,还会将远程git仓库的文件下载到本地仓库。

2.2用户名设置

全局用户信息
git config --global user.name 用户名 设置全局用户名
git config --global user.email 邮箱 设置全局用户邮箱
设置完成后可以在home目录下的.gitconfig文件下查看

本仓库信息信息
git config user.name 用户名
git config user.name 用户名

  当没有设置本仓库信息时,修改远程仓库默认使用全局用户信息;当设置好本仓库信息时,修改远程仓库使用本仓库用户信息。可以使用git config user.namegit config user.email来查看当前所使用的用户信息。
在这里插入图片描述

2.3 一个提交新版本的例子

1.在工作区创建了一个新的文件gittest.txt,输入git status可以检测到未追踪文件(Untracked files)gittest.txt,并且提示使用git add来提交到暂存区。
在这里插入图片描述
2.输入命令git add gittest.txt再查看git状态,检测到暂存区有新文件gittest.txt。
在这里插入图片描述
3.输入命令git commit -m 'create gittest.txt'再查看git状态,显示本地分支比远程分支超前了一个commit,并提示用git push命令来提交本地的commit。
在这里插入图片描述
4.输入命令git push origin master'将本地的commmit提交到远程仓库,再查看git状态,没有检测到需要提交的文件。
在这里插入图片描述


3.git版本管理

命令名称命令作用
git log查看版本详细信息
git reflog查看版本简易信息
git reset回退版本

git reset 的详细用法可以看这篇文章https://www.runoob.com/git/git-reset.html
另外,版本号可以通过git reflog查看,例如3e3de50就是当前的版本号,e8fe73d就是上一版本的版本号。
在这里插入图片描述

4.git分支管理

命令名称命令作用
git checkout 分支名切换分支
git branch -v查看分支
git branch 分支名创建分支
git merge 分支名把指定的分支合并到当前分支上

4.1 origin、master、head的理解

在2.3 一个提交新版本的例子中git push origin master,其中origin代表的是远程git服务器地址,称为远程主机名。通常我们clone一个代码,默认的远程仓库的名字就是origin。master指向master主分支上最近的一次提交,head默认指向master。在2.3例子中分支情况如下图:
在这里插入图片描述

4.2 创建新分支

1.git branch feature创建feature功能分支,feature会默认指向master,此时分支情况如下图:

在这里插入图片描述
2.git checkout feature切换到feature分支,此时分支情况如下图:
在这里插入图片描述
git branch -v查看分支情况,可以看到一共有两个分支,当前分支为feature,feature和master都指向同一版本。
在这里插入图片描述
注意:除了用git branch -v命令查看当前分支外,也可以查看cat .git/HEAD查看HEAD文件,该文件记录head指针指向哪个分支。

3.在feature分支上创建feature.txt文件并且提交到本地仓库。此时分支情况如下图:
在这里插入图片描述通过git branch -v也可以看到master和feature指向了两个不同的版本了
在这里插入图片描述
5.切换回master分支,可以看到切换分支后,工作区的内容也会跟着改变。
在这里插入图片描述
6.git merge feature在master分支上合并feature分支。此时的分支情况如下
在这里插入图片描述
这是一种比较简单的分支合并。当两个分支合并时,会比较每一个文件的每一行内容。这里feature只比master多了一个文件,那么分支合并就直接把master指向feature的版本就可以了。

考虑一下两种情况:
1.如果两个分支对同一个文件的第一行和第二行内容进行修改,分支合并的情况是怎样的?
2.如果两个分支对同一个文件的第一行内容都进行修改,分支合并的情况又是怎样的?
对于第一个问题,git会创建一个新的版本,该版本中对这个文件的第一行和第二行的修改都进行保存,然后将两个指针同时指向这个新的版本
对于第二个问题,git除了完成上述工作外,还需要认为决定新版本内容以确定该文件第一行的内容。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值