git常用

目录

      • 核心概念简述
      • [1. git init - 初始化新仓库](#1. git init - 初始化新仓库)
      • [2. git clone - 克隆远程仓库](#2. git clone - 克隆远程仓库)
      • [3. git push - 推送本地提交](#3. git push - 推送本地提交)
      • [4. git pull - 拉取并合并更新](#4. git pull - 拉取并合并更新)
      • [5. git fetch - 获取远程更新](#5. git fetch - 获取远程更新)
      • [6. 切换分支](#6. 切换分支)
      • [7. git merge - 合并分支](#7. git merge - 合并分支)
      • 总结与工作流图示

核心概念简述

  • 工作区 (Working Directory):你直接编辑文件的目录。
  • 暂存区 (Staging Area / Index)**:一个准备下次提交的文件列表。
  • 本地仓库 (Local Repository) :存储项目所有版本记录和数据的地方 (在 .git 目录中)。
  • 远程仓库 (Remote Repository):托管在服务器上(如 GitHub, GitLab)的仓库,用于团队协作。

1. git init - 初始化新仓库

作用 :将一个普通目录转变为 Git 仓库,创建一个 .git 子目录来跟踪管理。

用法

bash 复制代码
# 在当前目录初始化
git init

# 在新目录中初始化
git init <项目目录名>

场景:当你开始一个新项目,并想用 Git 管理它的版本时。


2. git clone - 克隆远程仓库

作用 :将远程仓库的完整副本 下载到本地,并自动设置好远程跟踪分支(通常是 origin)。

用法

bash 复制代码
# 基本克隆
git clone <远程仓库URL>

# 克隆到指定目录
git clone <远程仓库URL> <本地目录名>

示例

bash 复制代码
git clone https://github.com/username/my-project.git
cd my-project # 自动进入项目目录

场景:获取一份已存在于服务器(如 GitHub)上的代码,开始你的工作。


3. git push - 推送本地提交

作用:将本地仓库的提交上传到远程仓库,与他人分享你的代码。

用法

bash 复制代码
# 首次推送,建立上游跟踪关系
git push -u origin <分支名>

# 之后的标准推送 (在已建立跟踪关系后)
git push

示例

bash 复制代码
# 你完成了本地开发,并提交了代码,现在要推送到 GitHub
git add .
git commit -m "添加了新功能"
git push -u origin main  # 第一次推送 main 分支
# 以后在这个分支上,直接 `git push` 即可

场景:当你完成了本地功能的开发或修复,并希望将代码更新到共享的远程仓库时。


4. git pull - 拉取并合并更新

作用 :从远程仓库获取最新版本并立即合并 到当前分支。它是 git fetch(获取) 和 git merge(合并) 两个操作的组合。

用法

bash 复制代码
git pull
# 等同于
git fetch
git merge origin/<当前分支名>

场景 :开始工作前,确保你的本地分支与远程仓库同步。注意:如果远程的更新与你的本地修改有冲突,你需要解决这些冲突。


5. git fetch - 获取远程更新

作用 :从远程仓库下载最新的提交、分支和标签等信息到你的本地仓库,但不会自动合并到你的工作区。

用法

bash 复制代码
# 获取所有远程仓库的更新
git fetch

# 获取特定远程仓库的更新
git fetch origin

git pull 的区别

  • git fetch:更安全。它只"查看"远程有什么更新,让你有机会在合并前审查更改(例如,使用 git log origin/main)。
  • git pull:更直接。它直接"下载并合并",可能会产生你未预料到的冲突。

场景:你想看看队友是否推送了新代码,但又不想立即合并到你的工作文件中。


6. 切换分支

作用:在不同的开发线(分支)之间切换。

用法

bash 复制代码
# 切换到已存在的分支
git checkout <分支名>
# 或者使用更新的 switch 命令 (Git 2.23+)
git switch <分支名>

# 创建并切换到新分支
git checkout -b <新分支名>
git switch -c <新分支名> # 新命令

示例

bash 复制代码
# 从 main 分支创建一个开发新功能的分支
git switch -c feature/login
# ... 进行一些开发 ...
git add .
git commit -m "完成登录界面"

# 切换回 main 分支
git switch main

场景:需要在不影响主分支的情况下开发新功能或修复 Bug。


7. git merge - 合并分支

作用:将一个分支的修改整合到当前分支。

用法

  1. 首先,切换到你要接收更改的分支(通常是主分支)。
  2. 然后,执行 merge 命令,指定要合并过来的源分支。
bash 复制代码
git checkout main       # 切换到目标分支
git merge feature/login # 将 feature/login 分支合并到 main

合并结果

  • 快进合并 (Fast-forward):如果目标分支没有新的提交,Git 只需要将指针向前移动。这是最简单的情况。
  • 三方合并 (3-way merge):如果两个分支都有新的提交,Git 会创建一个新的"合并提交"来连接它们。
  • 冲突 (Conflict):如果两个分支修改了同一文件的同一区域,Git 无法自动合并,会标记为冲突,需要你手动解决。

解决冲突

  1. Git 会在冲突文件中标记出冲突部分(<<<<<<<, =======, >>>>>>>)。
  2. 你手动编辑文件,选择保留哪一方的代码,或进行整合。
  3. 删除标记符号后,执行 git add <冲突文件> 将解决后的文件标记为已解决。
  4. 最后执行 git commit 来完成合并提交。

场景:当你完成了一个功能的开发,并希望将它集成到主分支时。


总结与工作流图示

一个典型的协作工作流:

bash 复制代码
# 1. 获取代码
git clone https://github.com/company/project.git
cd project

# 2. 基于主分支创建功能分支
git switch -c my-feature

# 3. 进行开发,多次提交
git add .
git commit -m "完成第一步"
# ... 更多开发 ...

# 4. 在推送前,先拉取最新的 main 分支,确保兼容性
git switch main
git pull origin main

# 5. 回到功能分支,合并最新的 main(解决可能的冲突)
git switch my-feature
git merge main

# 6. 推送功能分支到远程
git push -u origin my-feature

# 7. 在 GitLab/GitHub 上创建 Pull/Merge Request 请求合并到 main
# 8. 同事审查后,在界面上完成合并
相关推荐
久莜1 小时前
【Git】使用教程
git
果子火火1 小时前
Git clone couldn‘t connect to server
git
skywalk81632 小时前
github创建项目后,应该用main还是master作为默认branch?
git·github
正经教主2 小时前
【Git】Git07:GitHub desktop使用教程【可选】
git·github
5***a97517 小时前
Git虚拟现实案例
git·vr
牛奔18 小时前
git 清理未跟踪文件
git
摇滚侠21 小时前
VsCode 自带的 Git 使用教程
ide·git·vscode
H***997621 小时前
Git物联网案例
git·物联网
g***B7381 天前
Git版本控制工具对比
git