Git工作流

Git 工作流程

场景假设

完整步骤

步骤一:检查当前状态和文件

首先确认你所在的分支以及哪些文件被修改了

复制代码
# 查看当前所在分支(带*号的即为当前分支)查看有哪些文件被更改(新创建的文件会显示为红色,未跟踪)
git status

这时你会看到你新创建的文件列表,状态是 Untracked files。

第二步:将文件添加到暂存区

你需要告诉 Git,哪些文件你希望纳入版本控制。

复制代码
# 添加单个特定文件
git add filename.txt

# 添加所有当前目录下的新文件和更改文件(最常用)
git add .

# 或者,交互式地添加文件(适合谨慎选择的情况)
git add -i

添加后,再次使用 git status 查看,会发现文件变成了绿色,状态为 Changes to be committed。

第三步:提交更改到本地仓库

将暂存区的文件创建一个正式的提交记录

复制代码
# 提交并添加提交信息
git commit -m "描述你这次提交做了什么,例如:添加新功能文档"

# 提交信息应该清晰明了,例如:
# git commit -m "feat: add user login feature"
# git commit -m "docs: create API documentation"

第四步:推送到远程仓库

将本地master分支推送到远程仓库

复制代码
# 如果是第一次推送本地master分支到远程,需要建立追踪关系
git push -u origin master

# 之后再次推送时,只需要简单的
git push

恭喜! 此时你本地创建的文件就已经成功合并到远程 master 分支了。

可能出现的情况及处理方法

情况一:推送前远程已有新的提交

如果你的同事在你 git push 之前已经向远程 master 推送了代码,你会收到提示 "拒绝合并不相关的历史" 或 "非快进式推送"。

解决方法: 先拉取远程最新代码并合并。

复制代码
# 拉取远程master分支的最新代码并与本地合并
git pull origin master

# 如果git pull有冲突,需要手动解决冲突,然后:
git add .
git commit -m "解决合并冲突"
git push

情况二:你不在 master 分支上

如果你在另一个分支(例如 dev)上创建了文件,想合并到远程 master,有几种方法:

方法A:直接合并分支(推荐)

  • 确保 dev 分支的更改已提交。

  • 切换回 master 分支。

  • 合并 dev 分支。

  • 推送到远程。

    1. 在dev分支上提交更改(如果还没提交)

    git add .
    git commit -m "在dev分支上完成的工作"

    2. 切换回master分支

    git checkout master

    3. 将dev分支的更改合并到master

    git merge dev

    4. 推送到远程

    git push origin master

方法B:通过Pull Request (Merge Request)(更推荐用于团队协作)

  • 将你的 dev 分支推送到远程。

  • 在GitHub/GitLab等平台上,创建一个从 dev 到 master 的Pull Request。

  • 经过代码审查后,在平台上合并它。

  • 在本地拉取最新的 master 代码。

    1. 推送你的功能分支到远程

    git push -u origin dev

    2. 然后在GitHub等网站创建PR并合并

    3. 回到本地master分支,拉取更新

    git checkout master
    git pull origin master

本地和远程创建 dev 分支的完整流程

场景分析

通常有两种情况

  1. 从零开始,本地远程都没有dev分支
  2. 已有基础,本地有dev分支,需要远程推送

情况一:从零开始创建 dev 分支
第一步:在本地创建并切换到 dev 分支

复制代码
# 方法1:创建并立即切换到 dev 分支(推荐)
git checkout -b dev

# 方法2:分两步执行
git branch dev      # 创建分支
git checkout dev    # 切换到分支

# 方法3:使用 switch 命令(Git 2.23+ 更直观)
git switch -c dev

第二步:验证分支切换

复制代码
# 查看当前所在分支,带 * 号的是当前分支
git branch

# 或者查看更详细的信息
git status

第三步:在 dev 分支上进行工作

复制代码
# 添加文件、修改代码等
echo "这是dev分支的内容" > dev-feature.txt
git add .
git commit -m "feat: 在dev分支上添加新功能"

第四步:将本地 dev 分支推送到远程

复制代码
# 首次推送需要建立追踪关系
git push -u origin dev

# 之后再次推送只需要
git push

完成! 现在本地和远程都有了 dev 分支。

情况二:基于远程 master 创建 dev 分支

如果你希望基于远程最新的 master 分支来创建 dev 分支:

第一步:确保本地 master 是最新的

复制代码
# 切换到 master 分支
git checkout master

# 拉取远程最新代码
git pull origin master

第二步:基于最新 master 创建 dev 分支

复制代码
# 创建并切换到 dev 分支
git checkout -b dev

# 推送到远程
git push -u origin dev

常用分支操作命令

查看分支信息

复制代码
# 查看本地分支
git branch

# 查看所有分支(包括远程)
git branch -a

# 查看分支详情(最后提交信息)
git branch -v

# 查看远程分支
git branch -r

分支切换和删除

复制代码
# 切换到已有分支
git checkout branch_name
# 或者
git switch branch_name

# 删除本地分支(确保不在要删除的分支上)
git branch -d dev    # 安全删除(已合并)
git branch -D dev    # 强制删除(未合并)

# 删除远程分支
git push origin --delete dev

更新和同步

复制代码
# 拉取远程dev分支的最新更改
git pull origin dev

# 如果本地dev分支已经存在,与远程建立关联
git branch --set-upstream-to=origin/dev dev

完整的工作流程示例

复制代码
# 1. 从master创建dev分支
git checkout master
git pull origin master
git checkout -b dev

# 2. 在dev分支上工作
echo "新功能开发" > new-feature.txt
git add .
git commit -m "feat: 开发新功能"

# 3. 推送到远程
git push -u origin dev

# 4. 验证结果
git branch -a

团队协作最佳实践

  1. 定期同步

    git pull origin dev

  2. 解决冲突:如果git pull有冲突

    复制代码
     git add .
     git commit -m "解决合并冲突"
  3. 保持分支清洁:在开始新功能前确保分支是最新的。

理解 origin/HEAD -> origin/master

  • origin/HEAD 是一个符号引用,指向远程仓库的默认分支
  • -> origin/master 表示当前远程仓库的默认分支是 master 分支
  • 这相当于远程仓库的"当前活跃分支"

查看这个信息

复制代码
# 查看所有分支信息(会显示 origin/HEAD 指向)
git branch -a

# 或者使用
git ls-remote --heads origin

在实际操作中的影响

创建和推送 dev 分支不受影响

即使 origin/HEAD 指向 master,你仍然可以正常创建和推送 dev 分支:

复制代码
bash
# 1. 创建并切换到 dev 分支
git checkout -b dev

# 2. 在 dev 分支上工作
echo "dev branch work" > feature.txt
git add .
git commit -m "feat: add new feature"

# 3. 推送到远程(不受 origin/HEAD 影响)
git push -u origin dev

简化命令

因为 origin/HEAD 指向 master,有些命令可以简化:

复制代码
# 以下两个命令等价(拉取默认分支)
git pull origin
git pull origin master

# 以下两个命令等价(推送到默认分支)
git push origin
git push origin master

更改默认分支

方法一:通过git命令(需要权限)

复制代码
# 将远程 HEAD 指向 dev 分支
git remote set-head origin dev

# 验证更改
git branch -a

方法二:通过git服务平台(推荐)

在 GitHub/GitLab 等平台的操作:

  1. 进入仓库页面
  2. 点击 Settings → Branches
  3. 在 "Default branch" 处选择 dev
  4. 点击 Update/Save

方法三:直接推送更改

复制代码
# 推送并设置远程 HEAD
git push origin dev
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/dev
相关推荐
妮妮喔妮5 小时前
pycharm远程提交Git
ide·git·pycharm
m0_748255416 小时前
深度掌握 Git 分支体系:从基础操作到高级策略与实践案例
大数据·git·elasticsearch
晟盾科技6 小时前
git重写历史
git·1024程序员节
韭菜炒大葱1 天前
Git入门指南:掌握版本控制的核心工作流程
git·面试
用户6600676685391 天前
Git 入门指南:掌握版本控制的核心概念与命令
git
小生不才yz1 天前
(一)仓库创建与配置 - .git 目录的结构与作用
git
三坛海会大神5551 天前
CICD(一)CI/CD概述及GitLab部署和一些Git命令
git·ci/cd·1024程序员节
荣光波比1 天前
CICD(一)—— 从零搭建 GitLab 全流程(Docker 部署 + 实战指南)
git·ci/cd
摇滚侠2 天前
VScode 提交代码 Git
git