git使用之基本语法和理解

本文详细介绍了Git作为分布式版本管理工具的基本概念,包括仓库结构、命令操作、分支管理及远程仓库交互,阐述了Git如何通过快照和指针高效管理文件变更。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git简介

git是分布式版本管理工具,首先需要安装该软件,可到官网下载。 git依靠快照和指针来管理各个文件,所以速度很快。而分布式的意义是每个git仓库都是平等且相同的(初始状态或更新之后)。
  git命令不做详解,可参考git提示和官方文档,git官方文档:https://git-scm.com/book/zh/v2 。其他相关教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

git仓库

git目录是包含.git隐藏目录的目录,一般使用git init 初始化一个目录成为git目录。git目录包含三个区域:工作区、暂存区(stage)、仓库(commit区)。
工作区存放原始文件,一般是项目文件;通过使用git add 文件名 将工作区文件放入到暂存区,此时被添加的文件已被追踪,可以通过git status 命令查看;git commit 文件名 将暂存区文件提交到仓库。
一般的git仓库分为本地仓库和远程仓库,须知远程仓库和本地仓库是一样的概念,并无特殊。远程仓库作为备份点,通常的做法是在本地仓库进行操作,然后推送到远程仓库。
初次获取远程仓库,使用命令:git clone 远程仓库地址 [本地仓库命名] 且只会克隆master分支
后续获取远程仓库的命令是git pull。
本地仓库推送到远程仓库命令:git push origin [分支],推送只会将当前分支的仓库推送到远程分支,未commit的(即工作区和暂存区文件)不会被推送。

分支的理解

初始化git目录后可以使用git branch命令查看当前分支,只有一个master分支,其他的分支需要手动创建和销毁。
master分支和其他分支本质上是一样的,只是它标记该分支作为主分支或主线。
为什么要使用分支?分支具有很多优点,一般主分支不作具体开发工作,只做合并其他分支和发布版本使用,开发测试工作则由其他手动创建的分支完成,每个分支可以完成各自独立的任务,然后再合并到master分支,分支之间并无干扰。
深入理解分支需要明白下面几句话:

  1. 所有的分支共用工作区和暂存区,而每个分支的仓库是独立的。
    可以做如下测试:在master分支使用git checkout -b dev新建dev分支并切换到dev分支,在dev中新建文件,即工作区文件,未commit之前,使用命令git checkout master切换到master分支,git status查看,可以看到新建的文件,而在dev中commit之后再切换到master查看,就看不到新建的文件了;另一个测试是在dev中新建文件,切换到master分支并提交,此时新建文件是属于master分支的,dev分支中并无此文件。这就验证了暂存区是共用的了。
  2. 新建分支依附于根分支,根分支的文件会自动添加到其附属分支上(内部原理是使用指针而不是拷贝一份)。
    举例:master分支有文件m.txt,master分支作为根分支新建dev分支,则dev分支此时的内容和master一样。dev又新建了文件d.txt,又作为根分支新建了feature分支,则feature分支有两个文件m.txt和d.txt。如果其他人更新了master分支,pull到本地后,master分支内容改变,但dev和feature分支内容并没有改变,因为其依附于原来的根分支master的提交点(每次提交都是一个提交点)。
  3. 分支的push和pull也是独立的。
    本质上本地分支和远程分支交互时操作的是仓库,由于仓库是独立的,所以分支的操作也是独立的,即推送和拉取分支并不会更新其他的分支。

创建其他分支的目的是完成细化的任务,完成后必须要合并到master分支,首先要先切换到master分支,然后使用命令git merge 分支名 合并。如果合并时有冲突要先解决冲突,解决之后使用命令git add表示冲突已解决,然后就可以正常合并了。
有时候在一个分支工作时需要新建其他的分支完成其他的工作,比如修复bug,为避免干扰和冲突,当前分支的暂存区和工作区必须清空(上面第一句话:共用暂存区),一种方法是commit;还有一种方法是使用命令git stash将当前暂存区内容隐藏起来,等新分支完成任务回到原分支后,再使用命令git stash pop恢复即可。但此命令只能操作暂存区内容,所以工作区内容必须先add到暂存区才能stash。
待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值