当前位置: 首页 > news >正文

Git工作流

Git 工作流程

场景假设

  • 你已经在本地项目目录中。
  • 你创建了一些新文件。
  • 你的远程仓库地址是 https://github.com/username/repository.git(请替换为你自己的地址)。
  • 你的主分支叫做 master。

完整步骤

步骤一:检查当前状态和文件
首先确认你所在的分支以及哪些文件被修改了

# 查看当前所在分支(带*号的即为当前分支)查看有哪些文件被更改(新创建的文件会显示为红色,未跟踪)
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
  1. 解决冲突:如果git pull有冲突
     git add .git commit -m "解决合并冲突"
  2. 保持分支清洁:在开始新功能前确保分支是最新的。

理解 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
http://www.dtcms.com/a/528091.html

相关文章:

  • 简单企业网站青岛天元建设集团网站
  • C#/.NET 微服务架构:从入门到精通的完整学习路线
  • 从 MySQL 过渡到 PostgreSQL 学习计划(暂定)
  • JAVA算法练习题day53
  • 在 C# .NETCore 中使用 RabbitMQ 实现发布、订阅示例
  • 【MySQL-笔记】数据库MySQL的安装与卸载
  • 网站没有域名wordpress修改鼠标
  • LeetCode 刷题【133. 克隆图】
  • [人工智能-大模型-74]:模型层技术 - 模型训练六大步:③神经网络,预测输出:基本功能与对应的基本组成函数
  • 机器学习锂离子电池!预估电池!
  • Redshift历史SQL运行记录查询
  • 告别信息孤岛:工业无线网桥实现跨车间、跨厂区统一组网
  • 7.2 按钮实验
  • 多语言网站思路柳州市安全教育平台
  • 触摸未来2025-10-25:蓝图绘制
  • 面向对象——设计模式(行为型)
  • 06-MySQL基础查询
  • 蓬莱网站建设哪家专业苏州智能网站开发
  • 医院慢病管理软件系统问题域需求分析文档(示例)
  • Java 大视界 -- Java 大数据机器学习模型在舆情分析中的情感倾向判断与话题追踪
  • 用于小样本故障增量学习的多视图 Shapelet 原型网络
  • 动态规划思想的延伸:计数模式再升级——巧妙捕捉「优美子数组」
  • 徐州提供网站建设要多少钱杭州房产网我爱我家官网
  • 鸿蒙NEXT系列之NDK UI监听组件事件
  • 20251025 分治总结
  • CentOS上安装dpkg的方法
  • 【C++ 泛型编程】基于哈希表封装 unordered_set(附完整源码解析)
  • 【Docker】docker部署一个服务
  • 【C++】set map 的使用
  • mormot.net.sock.pas的总体设计分析