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. 同事审查后,在界面上完成合并
相关推荐
Selicens11 小时前
git批量删除本地多余分支
前端·git·后端
闲云一鹤1 天前
Git LFS 扫盲教程 - 你不会还在用 Git 管理大文件吧?
前端·git·前端工程化
vibecoding日记4 天前
为什么我就想要「线性历史 + Signed Commits」,GitHub 却把我当猴耍 🤬🎙️
git·编程工具
程序员小崔日记5 天前
如何将代码轻松上传到 Gitee?Git 使用全攻略!
git·gitee·上传
Bigger6 天前
为什么你的 Git 提交需要签名?—— Git Commit Signing 完全指南
git·开源·github
DianSan_ERP6 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
红豆子不相思7 天前
Tomcat 环境搭建与集群实战
服务器·git·tomcat
杰哥技术分享7 天前
Git 仓库迁移技术文档:从 CODING.net 迁移至腾讯云 CNB
git
梅孔立7 天前
Ansible 100 台服务器一键管控实战 进阶版
服务器·git·ansible