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
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82685.shtml
英文地址,請注明出處:http://en.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…