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. 同事审查后,在界面上完成合并
相关推荐
言6662 小时前
要忽略前端依赖包node_modules的文件在目录下 git暂存区消失
git
胡小禾3 小时前
Git Worktree
git
程序员小羊!3 小时前
18 GIt
git
怣疯knight3 小时前
Git 本地分支关联远程分支 常用命令汇总
git
ANNENBERG4 小时前
git分支开发管理
git
坤坤藤椒牛肉面4 小时前
GIT的使用
git
w3296362714 小时前
使用 OpenCode 在 Windows 上加速安装 Playwright 的完整指南
windows·git
我家媳妇儿萌哒哒1 天前
git:无法推送refs到远端。您可以试着运行“拉取”功能,整合您的更改。
git
驯龙高手_追风1 天前
Gitlab本地服务器搭建及配置-详细教程
git·github
czhc11400756631 天前
6.11:halcon,Sqlserver;项目sql连接;git
git·sql·sqlserver