Bootstrap

git学习

Git 基础概念

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 分支

工作区/暂存区/仓库

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

工作区

本地计算机内的项目文件

暂存区(stage)

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

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

版本库(Repository)

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

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

三者之间的关系

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

Git 工作流程

|420

1、克隆仓库

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

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

2、创建新分支

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

git checkout -b new-feature

3、工作目录

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

4、暂存文件

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

git add filename

或者添加所有修改的文件

git add .

5、提交更改

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

git commit -m "Add new feature"

连接远程仓库

git remote add origin [[email protected]]

6、拉取最新更改

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

git pull origin main

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

git pull origin new-feature

7、推送更改

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

git push origin new-feature

8、删除分支

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

git branch -d new-feature

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

git push origin --delete new-feature

Git 指令

Git 分支

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

Git 分支常用命令

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] #删除远程分支
;