git学习

1 Git 基础概念

1.1 Git 概念汇总

概念 描述
工作区(Workspace) 在本地的代码库,新增和修改的文件会提交到暂存区
暂存区(stage) 用于临时存放文件的修改,实际上是一个文件(. Git/index),保存待提交的文件列表
仓库(repository) Git 的管理仓库,记录文件状态的地方,所有的代码版本都在里面
远程仓库(origin/remote) 专用的 git 服务器,为多人提供共享服务。本地的仓库通过 ==push==命令将代码推送到远程仓库里
本地仓库 本地电脑内直接使用的版本库
分支(Branch) 分支是从主线分离出的副本,可以独立操作而不干扰主线,仓库初始化后会有一个默认主分支“master”或“main”
(HEAD) HEAD 类似指针,指向当前活动分支的最新版本
提交(Commit) 将 stage 中的所有变更提交到当前仓库的活动分支
推送(Push) 将本地仓库的版本推送到远程仓库
拉取(Pull) 从远程仓库获取更新到本地仓库
获取(Fetch) 从远程仓库更新,作用同 pull,但是不会自动合并
冲突(Conflict) 多人对同一个文件进行修改后在远程仓库合并时会面临冲突,需要人工合并处理
合并(Merge) 对有 conflict 的文件进行合并操作,git 可以自动合并变更内容,无法自动处理的文件需要人工处理
标签(Tag) 标签指的是某个分支某个特定时间点的状态,可以理解为提交记录的别名,常用来标记版本。
main/master 仓库的默认主分支
origin/main 表示远程仓库的 main 分支

1.2 工作区/暂存区/仓库

  • 图中的 objects 标识的区域为 git 的对象库,实际的位置是“. Git/objects”目录中,里面包含了创建的各种对象和内容
  • 当对工作区的修改/新增文件执行 git add命令后,暂存区的目录树被更新,同时工作区修改/新增文件的内容被写入 objects 的一个新的对象中,而该对象的 ID 被记录在 stage 的文件索引中
  • 当执行 git commit时,stage 的目录树写入 objects 中,main 分支做出更新
  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
  • 当执行 git rm –cached “file” 命令时,会直接从暂存区删除文件,工作区则不做出改变

1.2.1 工作区

本地计算机内的项目文件

1.2.2 暂存区(stage)

暂存区是一个临时存储区域,包含即将提交到版本库中的文件快照
常用命令

1
2
3
git add filename       # 将单个文件添加到暂存区
git add . # 将工作区中的所有修改添加到暂存区
git status # 查看哪些文件在暂存区中

1.2.3 版本库(Repository)

版本库包含项目的所有版本历史记录,每次提交都会在版本库中创建一个新的快照,这些快照不可变,确保了项目的完整历史记录
常用命令

1
2
3
4
git commit -m "Commit message"   # 将暂存区的更改提交到本地版本库
git log # 查看提交历史
git diff # 查看工作区和暂存区之间的差异
git diff --cached # 查看暂存区和最后一次提交之间的差异

1.2.4 三者之间的关系

  • 工作区->暂存区
1
git add
  • 暂存区->版本库
1
git commit -m "Commit message"
  • 版本库->远程仓库
1
git push origin branch-name
  • 远程仓库->本地版本库
1
2
3
4
git pull origin branch-name
# 或者
git fetch origin branch-name
git merge origin/branch-name

1.3 Git 工作流程

|420

1.3.1 1、克隆仓库

如果你要参与一个已有的项目,首先需要将远程仓库克隆到本地:

1
2
git clone https://github.com/username/repo.git
cd repo

1.3.2 2、创建新分支

为了避免直接在 main 或 master 分支上进行开发,通常会创建一个新的分支:

1
git checkout -b new-feature

1.3.3 3、工作目录

在工作目录中进行代码编辑、添加新文件或删除不需要的文件。

1.3.4 4、暂存文件

将修改过的文件添加到暂存区,以便进行下一步的提交操作:

1
git add filename

或者添加所有修改的文件

1
git add .

1.3.5 5、提交更改

将暂存区的更改提交到本地仓库,并添加提交信息:

1
git commit -m "Add new feature"

连接远程仓库

1
git remote add origin [git@github.com]

1.3.6 6、拉取最新更改

在推送本地更改之前,最好从远程仓库拉取最新的更改,以避免冲突:

1
git pull origin main

或者如果在新的分支上工作

1
git pull origin new-feature

1.3.7 7、推送更改

将本地的提交推送到远程仓库:

1
git push origin new-feature

1.3.8 8、删除分支

如果不再需要新功能分支,可以将其删除:

1
git branch -d new-feature

或者从远程仓库删除分支:

1
git push origin --delete new-feature

2 Git 指令

3 Git 分支

Git 仓库在 fork 中打开后界面如下:
|405
可以看到每一个分支相互平行,只有完成某些项目的开发时才会合并到主分支。
那么分支有什么用呢?当计划开发一个新的功能时,第一天完成了百分之 50,如果直接提交到 master 分支,则可能导致别人无法开发,如果全部写完再提交的话又可能因为意外丢失之前的进度。此时就体现出来分支的优越性了。我们可能创建一个属于自己的别人不可见的分支,在这个分支上开发提交代码不会影响他人,可以随意操作,等到开发结束了再一次性合并到 master 分支。

3.1 Git 分支常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
git branch # 列出所有本地分支

git branch -r #列出所有远程分支

git branch -a #列出所有本地和远程的分支

git branch [new-branch-name] #创建一个新的分支,但停留在当前分支

git checkout -b [new-branch-name] #创建一个新的分支,并切换到该分支

git branch --track [branch] [remote-branch] #创建一个新分支,并与指定的远程分支建立追踪关系

git checkout [new-branch-name] #切换到指定分支,并更新工作区

git merge [branch] #合并指定分支到当前分支

git branch -d [branch] #删除分支

git push origin --delete [branch] #删除远程分支

git学习
https://www.moerjielovecookie.icu/2024/12/11/git学习/
作者
Sawen Moerjie
发布于
2024年12月11日
许可协议