Git教程学习笔记

简述

Git是目前世界上最先进的分布式版本控制系统。

  • 分布式:没有“中央服务器”(对应集中式SVN),每个人的电脑上都是一个完整的版本库。
  • 版本控制:记录每次文件改动的内容等。

Git安装与配置

不同系统的Git安装教程请参考:Git官网

# 安装git后 全局设置你本地的用户名和邮箱 起验证的作用
git config --global user.name "你的名字或昵称"
git config --global user.email "你的邮箱"

上面代码中,git config命令的--global参数,表示的你在这台机器上的所有的Git仓库都会使用这个配置,当然你也可以单个仓库进行指定。

创建版本库

版本库又名仓库(respository),可以理解为一个目录。这个目录中所有文件都可以被Git管理起来,每个文件的修改、删除都能追踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

选择一个合适的目录,使用git init命令创建仓库

git init
# Initialized empty Git repository in /Users/seabert/www/trains/git/.git/

上面代码中,我们可以看到在选定的目录下生成了一个.git的隐藏目录,这个目录是Git用来跟踪管理版本的,所以轻易不要修改里面的内容,否则可能会导致版本控制系统失效。

将文本添加到版本库

git add readme.md
git commit -m "添加readme文件"

# 1 file changed, 1 insertion(+)
# create mode 100644 readme.md

上面代码中,将文本添加到版本库只需要两步:

  1. 使用命令git add 命令告诉Git,把文件添加到仓库;
  2. 使用命令git commit 命令告诉Git,把文件提交到仓库。

值得注意的是:

  • 所有的版本控制系统,只能跟踪文件的改动(比如说在某行增加或删除了一个单词等)。但是对于像图片、视频和word文件这些二进制文件,却无法知道文件的内容改变,只能跟踪到文件的大小变化。
  • 使用git add或其他git相关的命令,必须要在已经创建版本库的目录中进行使用。否则会提示fatal: not a git repository (or any of the parent directories): .git
  • 使用git commit命令提交文件时,-m参数后面的注释内容最好是有意义的,这样以后还原或修改内容,都可以很快找到改动记录。

工作区、暂存区和版本库

基本概念

  • 工作区:就是电脑中可以看到的目录(我们创建仓库选择的目录)。
  • 暂存区:英文名为stageindex,一般存放在.git目录下的index文件中。
  • 版本库:工作区中有一个.git的隐藏目录。

三者之间的关系如下:

  • 图中左侧为工作区,右侧为版本库。在版本库中标记为index的区域就是暂存区,标记为master的是master分支所代码的目录树。
  • HEAD实际是指向master分支的一个“游标”,所以图示中出现HEAD的地方可以用master来替换。
  • 图中objects标识的区域为Git的对象库(.git/objects),里面包含了创建的各种对象及内容。
  • 当对工作区新增或修改的文件执行git add命令时,暂存区的目录树被更新,同时工作区新增或修改的文件内容被写入到对象库中一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作git commit时,暂存区的目录树写到版本库(对象库)中,master分支会做相应的更新。即master指向的目录树就是提交时暂存区的目录树。

查看日志

  • 查看提交日志

    增加--pretty=oneline参数,方便观看日志

    # 查看提交日志
    git log
    
    # 查出操作的命令
    git reflog
    
    # 版本回退上一个版本、回退两个版本、回退100个版本
    git reset --hard HEAD^
    git reset --hard HEAD^^
    git reset --hard HEAD~100
    
    # 还原版本
    git reset --hard commit_id

远程仓库

添加远程库

git remote add origin git远程地址

上述代码中,会制定远程的仓库名称为origin,并且关联本地仓库与远程库。

git push -u origin master

第一次推送时,使用-u参数会把本地的master分支内容推送到远程的master分支,并且会将本地master分支与远程master分支进行关联,下次再推送代码时,则可以省略-u后面的参数。

删除远程库

# 查看远程信息
git remote -v
# 删除远程仓库
git remote rm origin

从远程库进行克隆

git clone git远程仓库地址

克隆远程仓库支持多种协议,其中ssh协议速度最快

分支管理

合并冲突

  • 分支操作

    # 查看分支
    git branch
    
    # 创建分支
    git branch 
    
    # 切换分支
    git checkout  或 git switch 
    
    # 创建并切换分支
    git checkout -b  或 git switch -c 
    
    # 合并某分支到当前分支
    git merge 
    
    # 删除分支
    git branch -d 
  • 解决冲突

    git冲突显示样式

    <<<<<<< HEAD
    no,you can't.
    =======
    yes,you can.
    >>>>>>> dev

    移除冲突后,即可重新提交代码。使用git log --graph --pretty=oneline --abbrev-commit命令可详细看到解决冲突的过程。

  • 独立分支解决bug

    操作工作现场 ??

    # 储存工作现场
    git stash
    
    # 查看工作现场内容列表
    git stash list
    
    # 恢复工作现场
    git stash apply
    # 恢复指定的工作现场
    git stash apply stash@{0}
    
    # 删除工作现场
    git stash drop
    
    # 恢复并删除工作现场
    git stash pop

标签管理

操作标签

# 创建标签
git tag <tagname>
# 指定提交版本号打标签
git tag <tagname> <commit_id>

# 查看所有标签
git tag
# 查看单个标签
git show <tagname>

参考资料

https://www.liaoxuefeng.com/wiki/896043488029600

https://www.runoob.com/git/git-tutorial.html

这些信息可能会帮助到你: 关于我们 | 饿了么返钱 | 捐赠支持

文章名称:Git教程学习笔记
文章链接:https://www.bysjb.cn/git.html
THE END
分享
二维码
打赏
< <上一篇
下一篇>>