git简易入门教学

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

目录

  • 1.git整体架构
  • 2.git常用命令
      • 2.1建立本地库
      • 2.2用户名设置
      • 2.3 一个提交新版本的例子
  • 3.git版本管理
  • 4.git分支管理
      • 4.1 origin、master、head的理解
      • 4.2 创建新分支

1.git整体架构

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


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仓库关联起来。
git简易入门教学_第2张图片

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来查看当前所使用的用户信息。
git简易入门教学_第3张图片

2.3 一个提交新版本的例子

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


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例子中分支情况如下图:
git简易入门教学_第8张图片

4.2 创建新分支

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

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

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

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

你可能感兴趣的:(git)