Git典型使用场景相关命令

Git典型使用场景相关命令

  • 1 建立本地仓库与远程仓库的联系
  • 2 作为开发者参与项目的常用命令
    • 2-1 一般步骤
    • 2-2 **合并与同步主分支改动**
    • 2-3 **查看日志和差异**
    • 2-4 **提交后想修改或撤销**
    • 2-5 分支管理
    • 2-6 清除未被追踪的文件(谨慎使用)
  • 3 作为远程仓库管理者如何管理
    • 3-1 开发者提交代码后,管理者的常规处理流程
    • 3-2 管理者的日常维护职责
    • 3-3 管理者应关注的最佳实践
    • 3-4 补充
  • 4 作为普通贡献者如何参与项目
    • 4-1 Fork 并 Clone 项目
    • 4-2 创建分支,开发功能
    • 4-3 推送分支并发起 Pull Request
    • 4-4 等待审核与合并
    • 4-5 PR 被合并后,清理本地和远程分支
    • 4-6 小结

1 建立本地仓库与远程仓库的联系

  • step1:初始化本地仓库。这将在当前目录创建一个 .git 文件夹,使该目录成为 Git 的本地仓库。
git init
  • step2:添加远程仓库地址(设置“远程仓库”)
git remote add origin https://github.com/yourname/yourrepo.git

origin:是远程仓库的默认名称(你也可以改为别的名字,但推荐保留 origin)。
https://...git:是远程仓库的克隆地址(可以是 HTTPS 或 SSH)。

可以通过以下命令查看远程仓库是否添加成功:

git remote -v
  • step3:将本地代码提交并推送到远程仓库(首次)
  1. 添加文件并提交到本地仓库:
git add .
git commit -m "Initial commit"
  1. 推送到远程仓库并建立关联(首次推送时需要):
git push -u origin master
或者 git push -u origin main

-u 参数的作用:建立本地分支与远程分支的追踪关系。以后可以直接用 git pushgit pull,不用再每次都加远程名和分支名。

  • step4:之后每次更新,只需:
git add .
git commit -m "your message"
git push

如果是先在 GitHub 上建的仓库,再克隆下来:

git clone https://github.com/yourname/yourrepo.git

此时远程地址已经自动关联好了

2 作为开发者参与项目的常用命令

2-1 一般步骤

  • step1首次配置(只需配置一次)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
  • step2克隆项目(从远程获取代码)
git clone https://github.com/yourname/yourproject.git
cd yourproject
  • step3开发过程中的常用操作
  1. 查看当前状态
git status
  1. 拉取最新远程改动(建议先同步再修改)
git pull
  1. 新建并切换到新分支开发
git checkout -b feature/your-feature-name
  1. 添加修改的文件(所有修改)
git add .

或只添加指定文件:

git add file.txt
  1. 提交修改
git commit -m "描述清晰的提交信息"
  1. 推送分支到远程
git push origin feature/your-feature-name

2-2 合并与同步主分支改动

  1. 切换到主分支
git checkout main  # 或 master
  1. 拉取主分支最新代码
git pull
  1. 切换回功能分支并合并主分支
git checkout feature/your-feature-name
git merge main

2-3 查看日志和差异

  • 查看提交历史
git log --oneline --graph --all
  • 查看某个文件的修改差异
git diff file.txt

2-4 提交后想修改或撤销

  • 修改上一次提交信息(未 push)
git commit --amend
  • 撤销某次提交(保留修改)
git reset --soft HEAD~1

2-5 分支管理

  • 查看所有分支
git branch -a
  • 删除本地分支
git branch -d feature/xxx
  • 删除远程分支
git push origin --delete feature/xxx

2-6 清除未被追踪的文件(谨慎使用)

git clean -fd

3 作为远程仓库管理者如何管理

3-1 开发者提交代码后,管理者的常规处理流程

开发者提交方式

  • 推送分支到远程(如 feature/login
  • 或发起 Pull Request / Merge Request(如 GitHub、GitLab)

管理者的处理流程

  1. 获取开发者提交的代码
git fetch origin
# 从远程仓库 `origin` 获取最新的分支和提交记录,但不会自动合并到当前分支。
# `origin`:是远程仓库的默认名称。
# 这个命令会同步远程仓库的更新到本地的 `.git` 数据库中,比如远程的新分支、提交记录等。
# 不会改变当前工作目录里的任何文件或分支状态。
# 相当于“悄悄地更新了远程仓库信息”,不动你的代码。git checkout feature/login
# 切换到名为 `feature/login` 的本地分支。
# 如果这个分支是远程新创建的、本地还没有,那么需要加上 `-t`(跟踪远程分支):
# git checkout -t origin/feature/login 或 git switch -c feature/login origin/feature/login

上述命令的含义:

  1. 从远程拉取所有更新信息;
  2. 切换到一个你想要查看或工作的分支(比如某个开发者提交的 feature/login 分支);

如果本地没有该分支,推荐完整做法:

git fetch origin
git checkout -b feature/login origin/feature/login# `-b feature/login`:创建本地分支;
# `origin/feature/login`:指定跟踪哪个远程分支。
  1. 代码审查
  • 使用 GitHub/GitLab/Gitea/Bitbucket 的 Web 界面查看修改、讨论、留言。
  • 可以用如下命令本地查看差异:
git diff main...feature/login
  1. 测试/验证
  • 管理者会在本地或 CI/CD 环境中 运行测试
  • 检查是否有语法错误、逻辑问题、性能下降等。
  1. 合并代码
    合并分支回主分支(如 main)有几种方式:
合并方式命令 / 操作特点
普通合并(推荐)git merge feature/login保留历史,产生合并 commit
重写历史合并git rebase feature/login整理提交历史,可能引发冲突
GitHub 操作点击 “Merge pull request”自动合并,支持 squash/rebase

3-2 管理者的日常维护职责

任务命令 / 工具说明
删除合并完成的远程分支git push origin --delete xxx清理无用分支
查看提交日志git log --oneline --graph检查分支和合并历史
强制标准命名和保护策略GitHub 分支保护设置防止直接向 main 推送
回滚误提交git revert / git reset根据情况决定是否保留历史
添加 tag / 发布版本git tag v1.0.0 && git push --tags版本管理
配置 CI/CD 检查每次 PRGitHub Actions / GitLab CI 等自动测试、构建、部署

3-3 管理者应关注的最佳实践

  • 分支命名规范化(如:feature/, bugfix/, release/
  • 强制 code review 和 CI 通过后再合并
  • 禁止直接 push 到 main
  • 定期清理 stale 分支
  • 发布版本前打 tag
  • 用 squash 合并清理历史

3-4 补充

当有 Pull Request 时,管理员可以:

  • Merge:保留所有 commit
  • Squash and merge:将所有 commit 合并为一个(常用于整理历史)
  • Rebase and merge:将每个提交 replay 到主分支后面(清洁但可能有冲突)

4 作为普通贡献者如何参与项目

4-1 Fork 并 Clone 项目

  1. 点击 GitHub 项目页面的 Fork 按钮

这会把主项目复制一份到你的 GitHub 账户,例如:

  • 原仓库:https://github.com/openai/project.git
  • 你的 Fork:https://github.com/yourname/project.git
  1. Clone 你的 Fork 到本地
git clone https://github.com/owner/project.git
cd project
  1. 添加主项目作为远程源(方便同步主仓库更新)
git remote add upstream https://github.com/openai/project.git

检查远程列表:

git remote -v
# origin    https://github.com/yourname/project.git
# upstream  https://github.com/openai/project.git

4-2 创建分支,开发功能

  1. 同步主项目更新(可选)
git checkout main
git fetch upstream
git merge upstream/main

或直接重设为一致:

git reset --hard upstream/main
  1. 创建新功能分支(不要在 main 上开发)
git checkout -b feature/your-task-name
  1. 开发 & 提交
git add .
git commit -m "Add XXX feature"

可以多次 commit,保持粒度清晰。

4-3 推送分支并发起 Pull Request

  1. 推送分支到你自己的远程仓库(origin)
git push -u origin feature/your-task-name
  1. 在 GitHub 网页上,点击 “Compare & pull request” 按钮

填写描述 → 选择目标是主项目的 main 分支 → 提交 PR

4-4 等待审核与合并

  • 保持关注 PR 状态,维护者可能会提出修改建议
  • 可以在本地继续修改再 git push 到同一分支,PR 会自动更新

4-5 PR 被合并后,清理本地和远程分支

git checkout main
git pull upstream maingit branch -d feature/your-task-name
git push origin --delete feature/your-task-name

4-6 小结

fork 主仓库↓
clone 自己的 fork↓
添加主仓库为 upstream(可选)↓
新建 feature 分支 → 修改 → commit↓
push 到 origin(你的仓库)↓
发起 PR 到主项目的 main 分支↓
等待审核 → 被合并↓
删除旧分支,准备下一个任务

常用命令参考

操作命令
添加主项目为 upstreamgit remote add upstream <主项目地址>
同步主项目代码git fetch upstream && git merge
新建分支git checkout -b feature/xxx
提交修改git add . && git commit -m "message"
推送分支git push -u origin feature/xxx
删除远程分支git push origin --delete feature/xxx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis缓存-更新策略-三大缓存问题

缓存&#xff1a;数据交换的缓冲区&#xff0c;存储的数据的临时地方&#xff0c;读写性能较高。 步骤&#xff1a; 先从redis里面查询 缓存命中&#xff1a;直接返回结果缓存未命中 从数据库里面查询 没有数据&#xff1a;返回null有数据&#xff1a;存到redis里面&#xff…

[TriCore] 01.QEMU 虚拟化 TriCore 架构中的寄存器 指令

目录 1.寄存器宏 - FIELD() 2.寄存器操作 - FIELD_SETTER() & FIELD_GETTER() 3.指令辅助方法 - HELPER() 3.1.辅助宏 3.2.指令示例 3.3.函数调用 4.PSW 寄存器读写 - psw_read() & psw_write() 1.寄存器宏 - FIELD() FIELD() 宏定义寄存器 MASK // include/hw…

《软件工程》第 4 章 - 需求获取

在软件工程中&#xff0c;需求获取是挖掘用户真实需求的关键步骤&#xff0c;它为后续的设计、开发和测试提供坚实基础。本章将围绕需求获取的流程、方法及工具展开&#xff0c;结合实际案例与 Java 代码&#xff0c;深入讲解这一重要环节。 4.1 软件需求的初始表示 4.1.1 用例…

react diff 算法

diff 算法作为 Virtual DOM 的加速器&#xff0c;其算法的改进优化是 React 整个界面渲染的基础和性能的保障&#xff0c;同时也是 React 源码中最神秘的&#xff0c;最不可思议的部分 diff 算法会帮助我们就算出 VirtualDOM 中真正变化的部分&#xff0c;并只针对该部分进行原…

Gin项目脚手架与标配组件

文章目录 前言设计思想和原则✨ 技术栈视频实况教程sponge 内置了丰富的组件(按需使用)几个标配常用组件主要技术点另一个参考链接 前言 软件和汽车一样&#xff0c;由多个重要零部件组装而成。 本文堆积了一些常用部件&#xff0c;还没来得及好好整理。先放着。 神兵利器虽多…

【Webtrees 手册】第 10章 - 用户体验

Webtrees 手册/用户体验 < Webtrees 手册 跳转到导航跳转到搜索 信息 手册部分仍在建设中 请耐心等待或随意贡献自己的力量:-)。 第 10 章 - 用户体验 <- 章节概述 目录 1多位系谱学家的合作 1.1家庭研究模型1.2“孤胆战士”模型1.3示范“本地家庭书”1.4模特“俱乐部”…

Linux 进程概念(下)

目录 前言 4.进程状态 一.普遍的操作系统层面上宏观概念&#xff1a; 二.具体的Linux操作系统的状态&#xff1a; 5.进程优先级&#xff08;了解&#xff09; 6.其他概念 进程切换 前言 本篇是接着上一篇的内容继续往下了解进程相关的一些概念&#xff01; 4.进程状态 运…

使用java实现word转pdf,html以及rtf转word,pdf,html

word,rtf的转换有以下方案&#xff0c;想要免费最靠谱的是LibreOffice方案, LibreOffice 是一款 免费、开源、跨平台 的办公软件套件&#xff0c;旨在为用户提供高效、全面的办公工具&#xff0c;适用于个人、企业和教育机构。它支持多种操作系统&#xff08;Windows、macOS、…

IP证书的作用与申请全解析:从安全验证到部署实践

在网络安全领域&#xff0c;IP证书&#xff08;IP SSL证书&#xff09;作为传统域名SSL证书的补充方案&#xff0c;专为公网IP地址提供HTTPS加密与身份验证服务。本文将从技术原理、应用场景、申请流程及部署要点四个维度&#xff0c;系统解析IP证书的核心价值与操作指南。 一…

GitLab 18.0 正式发布,15.0 将不再受技术支持,须升级【三】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

超简单Translation翻译模型部署

Helsinki-NLP/opus-mt-{en}-{zh}系列翻译模型可以实现200多种语言翻译&#xff0c;Helsinki-NLP/opus-mt-en-zh是其中英互译模型。由于项目需要&#xff0c;在本地进行搭建&#xff0c;并记录下搭建过程&#xff0c;方便后人。 1. 基本硬件环境 CPU&#xff1a;N年前的 Intel…

Go语言JSON 序列化与反序列化 -《Go语言实战指南》

JSON&#xff08;JavaScript Object Notation&#xff09;是一种常见的数据交换格式。Go 标准库提供了 encoding/json 包&#xff0c;用于方便地将结构体与 JSON 之间互转。 一、序列化&#xff08;Marshal&#xff09; 将 Go 中的数据结构&#xff08;如结构体、map、slice 等…

免费PDF工具-PDF24V9.16.0【win7专用版】

【百度】https://pan.baidu.com/s/1H7kvHudG5JTfxHg-eu2grA?pwd8euh 提取码: 8euh 【夸克】https://pan.quark.cn/s/92080b2e1f4c 【123】https://www.123912.com/s/0yvtTd-XAHjv https://creator.pdf24.org/listVersions.php

网络 :序列和反序列化

网络 &#xff1a;序列和反序列化 &#xff08;一&#xff09;序列和反序列 概念&#xff08;二&#xff09;实例1. 封装socket 接口2. 制定协议&#xff08;用于实现序列和反序列化&#xff09;3. 计算(实现计算器功能)4. 服务器(将上面所有的类功能调用起来)5. 服务端6.客户端…

LiveQing 视频点播流媒体 RTMP 推流服务功能:搭建 RTMP 视频流媒体服务详细指南

LiveQing视频点播流媒体RTMP推流服务功能&#xff1a;搭建RTMP视频流媒体服务详细指南 一、流媒体服务搭建二、推流工具准备三、创建鉴权直播间四、获取推流地址五、配置OBS推流六、推流及播放七、获取播放地址7.1 页面查看视频源地址7.2 接口查询 八、相关问题解决8.1 大疆无人…

UE5 Niagara 如何让四元数进行旋转

Axis Angle中&#xff0c;X,Y,Z分别为旋转的轴向&#xff0c;W为旋转的角度&#xff0c;在这里旋转角度不需要除以2&#xff0c;因为里面已经除了&#xff0c;再将计算好的四元数与要进行旋转的四元数进行相乘&#xff0c;结果就是按照原来的角度绕着某一轴向旋转了某一角度

【微服务】SpringBoot 对接飞书审批流程使用详解

目录 一、前言 二、前置准备 2.1 开通企业飞书账户 2.2 确保账户具备多维表操作权限 2.3 获取飞书开放平台文档 2.4 创建应用 2.5 发布应用 2.6 应用添加操作权限 2.7 获取SDK 三、审批流程对接过程 3.1 配置流程审批定义(流程审批模型) 3.2 自定义应用添加审批AP…

主键与唯一键详解:概念、区别与面试要点

主键与唯一键详解:概念、区别与面试要点 一、核心概念解析 1.1 主键(Primary Key) 主键是数据库表中用于唯一标识每一行记录的列或列组合,具有以下核心特性: 唯一性:主键值在整个表中必须唯一,不允许重复非空性:主键列不允许包含NULL值不可变性:主键值一旦确立,原则…

前端面试准备-1

1.NodeJS的优缺点 优点&#xff1a;   高并发&#xff08;最重要的优点&#xff09;   适合I/O密集型应用 缺点&#xff1a;   不适合CPU密集型应用&#xff1b;CPU密集型应用给Node带来的挑战主要是&#xff1a;由于JavaScript单线程的原因&#xff0c;如果有长时间运行的…

GO并发过高导致程序崩溃如何解决

#作者&#xff1a;曹付江 文章目录 1.并发过高导致程序崩溃2. 如何解决2.1 利用 channel 的缓存区2.2 利用第三方库 3 调整系统资源的上限3.1 ulimit3.2 虚拟内存(virtual memory) 1.并发过高导致程序崩溃 看一个非常简单的例子&#xff1a; func main() {var wg sync.WaitG…