Git操作指南

Git操作指南

1.安裝并配置Git

Git官網:https://git-scm.com/downloads

安裝完成后,打開Git Bash,配置Git:

git config --global user.email "email@example.com"
git config --global user.name "Your Name"

其中 --global參數,表示這臺機器上所有的Git倉庫都會使用這個配置。

當然也可以對某個倉庫指定不同的用戶名與郵箱,在當前倉庫運行該命令而不使用–global即可。

2.獲取項目

使用Git進行版本管理的對象是項目,那么項目從哪里獲取呢?

兩種場景:

  1. 項目源碼在遠程版本庫(GitHub/GitLab/Gitee),從遠程版本庫克隆項目到本地。
  2. 項目源碼在本地,想要添加Git版本管理,并關聯推送到指定遠程版本庫。(或者采用第一種方案,遠程克隆到本地后再將代碼全部移動到版本庫,簡單快速)

2.1 從遠程版本庫克隆項目到本地

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

  1. SSH方式(推薦,速度快,需要密鑰)
git clone git@49.4.67.157:bdl/AI_Sports_App.git
  1. HTTP方式(不需要密鑰)
git clone http://49.4.67.157:7070/bdl/AI_Sports_App.git
如何配置密鑰

打開Git Bash,輸入cd .ssh,如果沒有該目錄,說明本機沒有配置過密鑰。

輸入cd …回到上一層目錄,即確保當前目錄在~下

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

輸入以下命令創建密鑰:

ssh-keygen -t rsa -C "your_email@youremail.com"

查看你生成的公鑰:

cat ~/.ssh/id_rsa.pub

復制公鑰,登錄GitHub/GitLab,點擊右上角頭像,點擊Setting,左側導航欄找到SSH Keys,將公鑰粘貼在Key輸入框中,設置Title,點擊Add Key保存即可。

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

  1. 克隆指定分支的版本
git clone -b <分支名> <Git URL>
  1. 指定克隆深度(depth=1即只克隆最新版本)
git clone --depth=1 <Git URL>

2.2 本地項目添加Git版本管理,并關聯推送到遠程版本庫

?(2.2節建議最最最后看,涉及后面的提交與推送操作)

進入項目根目錄,執行Git倉庫初始化操作。

git init

將項目所有內容提交到暫存區。

git add .

將暫存區內容推送的本地版本庫。

git commit -m "Add: Project"

在遠程版本庫(GitHub/GitLab/Gitee)上創建一個遠程倉庫。

獲取SSH鏈接(沒有配置SSH密鑰的話可使用HTTPS鏈接)

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

本地版本庫關聯遠程版本庫。

git remote add origin git@gitee.com:YanKeyon/YanKeyon.git

將遠程版本庫中代碼與本地版本庫中代碼進行合并。

git pull --rebase origin master

將本地版本庫代碼上傳至遠程版本庫。

git push -u origin master

OK。

3.查看版本庫狀態

git status

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

標紅的文件:FirstFile.txt 表示沒有被添加的文件。

4.將文件添加到暫存區

在上面我們通過git status可以看到有一個標紅文件,將該文件提交到暫存區有兩種方式:

  1. 提交單個文件到暫存區(為文件路徑)
git add <filename>
  1. 提交當前全部修改過的文件到暫存區
git add .

溫馨提示

如果新增了一個空的文件夾,Git是監測不到的,此時需要在該文件夾內創建文件后才可以。

5.提交暫存區的內容

git commit -m "描述"

-m 后面輸入的是本次提交的說明,可以輸入你本次提交的內容概略,方便以后從歷史記錄中方便的找到改動記錄。

6.推送到遠程版本庫

git push origin master

也可以只輸入git push ,默認提交到master分支。

7.從遠程版本庫更新項目到本地

使用場景:

  • 當遠程版本庫有更新,而本地想更新的時候使用
  • 當本地想提交時,建議先git pull一次,再通過git addgit commit -m ""git push提交本地代碼。
  1. 全部更新
git pull
  1. 更新單個文件
git fetch
git checkout origin/master -- <filename>

8.查看單個文件的修改內容

git diff <filename>

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

-表示刪除的內容

+表示增加的內容

溫馨提示

如果進入diff后發現無法退出,進入:模式,鍵入q即可。

9.查看提交日志

  1. 查看全部提交日志
git log

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

會列出所有提交的commit ID、Author、Date、描述。

也可以通過瀏覽器訪問GitHub/GitLab查看。

  1. 查看最新一次提交
git log -1
  1. 以單行的形式查看提交
git log oneline
  1. 查看提交日志,并且能看到分支情況(推薦)
git log --graph --pretty=oneline --abbrev-commit

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

10.撤銷修改

撤銷修改分多種情況:

  1. 該文件沒有使用git add到暫存區,仍在工作區:

    git checkout -- <filename>
    
  2. 該文件使用了git add到暫存區,但沒有使用git commit

    將暫存區的文件撤銷,重新放回工作區:

    git reset HEAD <filename>
    
  3. 該文件提交到暫存區并且git commit提交到本地版本庫:

    版本回退(回退到指定版本)

    git reset --hard <commit ID>
    

溫馨提示

使用checkout的時候最好在后面加–,單一分支的項目沒事,但如果是多分支的,沒有--就變成了“切換到另一個分支”的命令。

11.版本回退

  1. 回退到上一個版本
git reset --hard HEAD
  1. 回退到指定版本
git reset --hard <commit ID>
  1. 如果你回退版本后想重新回到新版本

    命令reflog可以記錄你的每一次命令,找到想回去的commit ID,使用reset即可。

git reflog

12.提交忽略文件的配置

  1. 在倉庫根目錄下新建.gitignore文件

  2. 添加忽略規則

    忽略規則如下:
    #			表示此為注釋,將被Git忽略
    *.a			表示忽略所有.a結尾的文件
    bulid/		表示忽略build/目錄下的所有文件
    bin/:		表示該文件夾下所有內容都被忽略,不忽略bin文件夾
    /bin:		表示忽略根目錄下的bin文件夾
    **/foo:		表示忽略/foo,a/foo,a/b/foo等
    !*.zip		表示不忽略所有.zip結尾的文件
    

    溫馨提示:

    如果你不慎在創建.gitignore文件之前就push了項目,那么即使你在.gitignore文件中寫入新的過濾規則,這些規則也不會起作用,Git仍然會對所有文件進行版本管理。簡單來說出現這種問題的原因就是Git已經開始管理這些文件了,所以你無法再通過過濾規則過濾它們。所以大家一定要養成在項目開始就創建.gitignore文件的習慣,否則一單push,處理起來會非常麻煩。

    模板

    在GitHub上有一個專門為各個平臺提供的.gitignore模板

    https://github.com/github/gitignore

    其中包括針對Android項目的忽略模板:

    
    # Built application files
    *.apk
    *.ap_
    *.aab# Files for the ART/Dalvik VM
    *.dex# Java class files
    *.class# Generated files
    bin/
    gen/
    out/# Gradle files
    .gradle/
    build/# Local configuration file (sdk path, etc)
    local.properties# Proguard folder generated by Eclipse
    proguard/# Log Files
    *.log# Android Studio Navigation editor temp files
    .navigation/# Android Studio captures folder
    captures/# IntelliJ
    *.iml
    .idea/workspace.xml
    .idea/tasks.xml
    .idea/gradle.xml
    .idea/assetWizardSettings.xml
    .idea/dictionaries
    .idea/libraries
    .idea/caches
    # Android Studio 3 in .gitignore file.
    .idea/caches/build_file_checksums.ser
    .idea/modules.xml# Keystore files
    # Uncomment the following lines if you do not want to check your keystore files in.
    #*.jks
    #*.keystore# External native build folder generated in Android Studio 2.2 and later
    .externalNativeBuild# Google Services (e.g. APIs or Firebase)
    # google-services.json# Freeline
    freeline.py
    freeline/
    freeline_project_description.json# fastlane
    fastlane/report.xml
    fastlane/Preview.html
    fastlane/screenshots
    fastlane/test_output
    fastlane/readme.md# Version control
    vcs.xml# lint
    lint/intermediates/
    lint/generated/
    lint/outputs/
    lint/tmp/
    # lint/reports/
    

13.更新/推送失敗的解決方案

  1. git pull更新失敗

    外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

    出現錯誤,提示你本地的修改與遠程版本庫的修改沖突了。

    藍框中的文件即為沖突的文件。

    解決方法

    1. 本地備份該文件。
    2. 通過git checkout -- <filename>撤銷本地對該文件的修改。
    3. 此時使用git pull即可更新。
    4. 然后再進行自己的修改并推送到遠程版本庫即可。
  2. git push推送失敗

    外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

    出現的原因一般是由于本地沒更新卻推送導致的。

    此時通過git pull更新一下項目即可再次推送。

    溫馨提示

    建議每次提交之前,先更新一下,確保版本最新后再提交。

14.提高效率的小技巧:配置別名

  1. git status 等價于 git st
git config --global alias.st status
  1. git checkout – 等價于 git co-
git config --global alias.co- checkout --
  1. git commit 等價于 git co
git config --global alias.co "commit -m"
  1. git push 等價于 git ps
git config --global alias.ps push
  1. git pull 等價于 git pl
git config --global alias.pl pull
  1. git log …(打印分支) 等價于 git lg
git config --global alias.lg "log '--graph' '--pretty=oneline' '--abbrev-commit'"
  1. 取消別名
git config --global --unset alias.別名

溫馨提示

  • 配置別名時,如果命令含有多個參數,需要使用""與’'將參數包含起來,否則設置會無效。
  • 不要重復配置別名,如重復配置,輸入git config --global --replace-all alias.別名 "命令"即可恢復到一個配置。
  • 輸入git config --list查看配置列表

Git進階:分支管理

參考:廖雪峰Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743862006503a1c5bf5a783434581661a3cc2084efa000

https://www.jianshu.com/p/92305d949c0e

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

1.創建分支

創建一個分支,名為dev

git branch dev

2.切換分支

切換到dev分支

git checkout dev

3.創建并切換分支

創建并切換到dev分支,即上面兩條命令可合成一條。

git checkout -b dev

4.查看當前分支

git branch

5.合并分支到當前分支

合并dev分支到當前分支

git merge dev

6.刪除分支

刪除dev分支

git branch -d dev

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900275.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900275.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900275.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux常用基礎命令應用

目錄 一、文件與目錄操作&#xff08;12個核心命令&#xff09;?? ??1. pwd - 顯示當前路徑?? ??2. ls - 查看目錄內容?? ??3. cd - 切換目錄?? ??4. mkdir - 創建目錄?? ??5. touch - 創建文件?? ??6. cp - 復制文件/目錄?? ??7. mv - 移動…

zookeeper基本概念和核心作用

圖片來源&#xff1a; 02-Zookeeper概念_嗶哩嗶哩_bilibili02-Zookeeper概念是黑馬程序員Zookeeper視頻教程&#xff0c;快速入門zookeeper技術的第2集視頻&#xff0c;該合集共計24集&#xff0c;視頻收藏或關注UP主&#xff0c;及時了解更多相關視頻內容。https://www.bilib…

關于HikariDataSource (null)的誤解,順帶提出一種mybaits-Plus mapper映射失敗的容易被忽視的原因

首先探究此問題并無什么實際意義&#xff0c;純屬是個人好奇使然&#xff0c;也順帶熟悉了一下Springboot 數據庫連接的相關問題&#xff0c;本人純小白說的不對的地方懇請大佬指正&#xff01;&#xff01; 關于HikariDataSource (null)的誤解 問題的發現 Value("${myba…

Centos7上安裝docker - yum在線的方式

步驟一 &#xff1a; 安裝 yum-utils yum install -y yum-utils步驟二 &#xff1a; 替換docker 的國內的源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo執行完成后&#xff0c;會在 /etc/yum.repos.d/ 目錄下 新增 doc…

250405-VSCode編輯launch.json實現Debug調試Open-WebUI

A. 最終效果 根據__init__.py配置launch.json 根據中utils/chat.py中form_data的messages [{role: user, content: 唐老鴨}],可以找到用戶輸入&#xff0c;進而通過關鍵詞或模型調用的方式&#xff0c;對敏感問題進行特殊處理。 B. 文件配置 launch.json // { // /…

①(PROFINET 轉 Modbus TCP)EtherCAT/Ethernet/IP/Profinet/ModbusTCP協議互轉工業串口網關

型號 協議轉換通信網關 PROFINET 轉 Modbus TCP MS-GW35 概述 MS-GW35 是 PROFINET 和 Modbus TCP 協議轉換網關&#xff0c;為用戶提供一種 PLC擴展的集成解決方案&#xff0c;可以輕松容易將 Modbus TCP 網絡接入 PROFINET 網絡中&#xff0c;方便擴展&#xff0c;不受限制…

分治-歸并排序-逆序對問題

目錄 1.升序&#xff08;以右邊的合并組為基準&#xff09; 2.降序&#xff08;以左邊的合并組為基準&#xff09; 3.逆對序--固定下標 1.升序&#xff08;以右邊的合并組為基準&#xff09; 找出左邊有多少個數比我(nums[right])大 應該在每一次合并之前&#xff0c;進行…

(四)數據檢索與增強生成——讓對話系統更智能、更高效

上一篇&#xff1a;&#xff08;三&#xff09;鏈式工作流構建——打造智能對話的強大引擎 在前三個階段&#xff0c;我們已經搭建了一個基礎的智能對話&#xff0c;并深入探討了輸入輸出處理和鏈式工作流構建的細節。今天&#xff0c;我們將進入智能對話系統的高級階段——數…

JVM虛擬機篇(二):深入剖析Java與元空間(MetaSpace)

這里寫目錄標題 JVM虛擬機篇&#xff08;二&#xff09;&#xff1a;深入剖析Java與元空間&#xff08;MetaSpace&#xff09;一、引言二、全面認識Java2.1 Java的起源與發展歷程2.2 Java的特性2.2.1 簡單性2.2.2 面向對象2.2.3 平臺無關性2.2.4 健壯性2.2.5 安全性2.2.6 多線程…

如何查看 MySQL 的磁盤空間使用情況:從表級到數據庫級的分析

在日常數據庫管理中&#xff0c;了解每張表和每個數據庫占用了多少磁盤空間是非常關鍵的。這不僅有助于我們監控數據增長&#xff0c;還能為性能優化提供依據。 Google Gemini中國版調用Google Gemini API&#xff0c;中國大陸優化&#xff0c;完全免費&#xff01;https://ge…

[Windows] XHS-Downloader V2.4 | 小紅書無水印下載工具 支持多平臺批量采集

[Windows] XHS-Downloader 鏈接&#xff1a;https://pan.xunlei.com/s/VON4ygFN1JcyzLJJIOqIpqodA1?pwdsinu# XHS-Downloader 是一款開源免費的小紅書內容下載工具&#xff0c;支持無水印視頻 / 圖文提取、多鏈接批量處理及賬號作品采集。其核心優勢包括&#xff1a; 全平臺…

6.1 寬度優先搜索算法(BFS)

寬度優先搜索算法(BFS Breadth first search) 又稱廣度優先搜索&#xff0c;這種搜索是逐層的&#xff0c;搜索完上層&#xff0c;才會搜索下一層&#xff0c;直到找到目標節點。 搜索過程如圖中箭頭方向&#xff1a; 【例如】 八數碼難題&#xff1a;利用空格的移動&#xff…

基于LSTM的文本分類2——文本數據處理

前言 由于計算機無法認識到文字內容&#xff0c;因此在訓練模型時需要將文字映射到計算機能夠識別的編碼內容。 映射的流程如下&#xff1a; 首先將文字內容按照詞表映射到成唯一的數字ID。比如“我愛中國”&#xff0c;將“中”映射為1&#xff0c;將“國”映射到2。再將文…

Redis數據結構之ZSet

目錄 1.概述2.常見操作2.1 ZADD2.2 ZRANGE2.3 ZREVRANGE2.4 ZRANGEBYSCORE2.5 ZSCORE2.6 ZCARD2.6 ZREM2.7 ZINCRBY2.8 ZCOUNT2.9 ZMPOP2.10 ZRANK2.11 ZREVRANK 3.總結 1.概述 ZSet和Set一樣也是String類型元素的集合&#xff0c;且不允許重復的成員&#xff0c;不同的是ZSet…

什么是DHCP服務,在生活中的應用是什么?

提起DHCP&#xff0c;不接觸互聯網的可能會很陌生&#xff0c;其實并沒有這么高深&#xff0c;簡明扼要的說就是可以自動為連接的設備分配IP地址&#xff0c;子網掩碼&#xff0c;網關&#xff0c;dns等網絡參數。使連接步驟簡化&#xff0c;從而提高效率。 主要功能&#xff…

2025 AI智能數字農業研討會在蘇州啟幕,科技助農與數據興業成焦點

4月2日&#xff0c;以"科技助農數據興業”為主題的2025AI智能數字農業研討會在蘇州國際博覽中心盛大啟幕。本次盛會吸引了來自全國各地相關部門領導、知名專家學者、行業協會組織&#xff0c;以及縣級市農業企業代表、縣級市農產品銷售商等萬名嘉賓齊聚姑蘇城&#xff0c;…

論文導讀 | SOSP23 | Gemini:大模型 內存CheckPoint 快速故障恢復

本期分享的是一篇SOSP 2023論文&#xff1a; Gemini: Fast Failure Recovery in Distributed Training with In-Memory Checkpoints Zhuang Wang (Rice University), Zhen Jia (Amazon Web Services, Inc.), Shuai Zheng (Amazon Web Services), Zhen Zhang (Amazon Web Servic…

wordpress可視化數據采集Scrapes插件,WP博客網站自動采集發布

源碼介紹 wordpress自動采集Scrapes插件&#xff0c;支持ripro&#xff0c;modown&#xff0c;子比&#xff0c;7b2等多種WordPress主題 支持PHP7.4&#xff0c;PHP8.0及以上不支持 上傳插件到wp-content/plugins目錄&#xff0c;然后解壓 不需要寫采集規則&#xff0c;傻瓜式…

JavaScript Math(算數)指南

JavaScript Math&#xff08;算數&#xff09;指南 引言 JavaScript的Math對象是一個內置對象&#xff0c;提供了進行數學運算的方法和值。它對于執行基本的數學計算、生成隨機數以及執行更復雜的數學操作非常有用。本文將詳細介紹JavaScript中的Math對象&#xff0c;涵蓋其常…

Deep Reinforcement Learning for Robotics翻譯解讀

a. 機器人能力 1 單機器人能力&#xff08;Single-robot competencies&#xff09; 運動能力&#xff08;Mobility&#xff09; 行走&#xff08;Locomotion&#xff09;導航&#xff08;Navigation&#xff09; 操作能力&#xff08;Manipulation&#xff09; 靜態操作&…