Android Studio-Git的使用指南

一、git的基本使用流程

?

  1. git clone 克隆遠程資源到本地目錄,作為工作目錄;
  2. 然后在本地的克隆目錄上添加或修改文件;
  3. 如果遠程修改了,需要同步遠程的內容,直接git pull就可以更新本地的文件;
  4. 本地在修改之后,可以通過git status 查看修改的文件。然后使用git add添加修改的文件暫到緩沖區
  5. 在添加之后,可以使用git commit添加到當前的工作區
  6. 在修改完成后,如果發現錯誤,可以撤回提交并再次修改并提交;
  7. git push將本地的修改推送到遠程的git服務器。

二、Git對象實現原理

????????在git中以存儲鍵值對(key-value)的方式來存儲文件。它允許插入任意類型的內容,并會返回一個鍵值,通過該鍵值可以在任何時候再取出該內容。git的kv中value一般有以下幾種類型blobtreecommit

1.git add底層原理

????????簡單說就是:在調用git add后會生成一個blob對象,然后將該對象add放進進index區。

????????詳細的說:git add命令把工作目錄里的修改保存到暫存區(也就是索引)。它會為每個文件生成一個 Blob 對象(存儲文件內容的哈希值)或樹對象(記錄目錄結構),并將這些對象存于.git/objects目錄。

????????暫存區的信息保存在.git/index文件中,該文件會記錄文件路徑、時間戳和哈希值等。

????????每次執行git add,都會覆蓋暫存區中對應文件之前的記錄,這樣就能分多次對同一文件進行部分更新。暫存區的作用是讓用戶可以把邏輯相關的修改組合在一起,方便后續處理。

2.git commit底層原理

????????簡單說就是:進行代碼提交時,需要根據暫存區的內容,先生成tree對象,再生成commit對象,然后會將記錄記錄到logs文件夾下。

? ? ? ? 詳細的說:git commit在底層會依據暫存區的內容生成一個提交對象(Commit Object),該對象包含父提交哈希(用于鏈接歷史提交)、作者 / 提交者信息、提交信息以及指向根樹對象(Tree Object)的哈希值。

????????樹對象記錄了文件路徑、權限和 Blob 對象(存儲文件內容)的引用關系。提交對象以 SHA - 1 哈希值為標識存儲在.git/objects目錄中。

????????提交操作會更新當前分支指針(如master),使其指向新生成的提交哈希,同時 HEAD 指針仍指向當前分支。多次提交會形成一條通過父哈希鏈接的提交鏈。

3.git Merge和Rebase的區別使用

1.Merge

創建一個新的「合并提交」(Merge Commit),同時保留兩個分支的歷史路徑。父提交指向兩個分支的最新提交,形成一個樹形結構。

git checkout main      # 切換到目標分支
git merge feature      # 合并 feature 分支到 main

2.Rebase

將當前分支的提交「復制」到目標分支的末尾,形成一條線性的提交歷史。原始提交會被丟棄,生成新的提交對象(哈希值改變)。

git checkout feature   # 切換到待變基的分支
git rebase main        # 將 feature 分支的提交移到 main 分支末尾

????????Git 的合并工具有?Merge?和?Rebase?兩種核心方式,它們的目標都是整合分支修改,但實現路徑不同。

????????Merge?通過創建一個新的「合并提交」(Merge Commit)來整合分支,這個提交同時指向兩個分支的最新提交,形成樹形結構,完整保留分支的創建和合并歷史。

????????其優點是操作簡單、適合團隊協作,能清晰展示分支演變過程;缺點是可能使提交歷史變得復雜。

????????例如,將?feature?分支合并到?main?分支后,會保留兩條分支路徑及合并節點。Merge?適用于需要保留完整時間線的場景,如多人并行開發時快速集成代碼。

????????Rebase?則是將當前分支的提交「復制」到目標分支的末尾,通過丟棄原始提交并生成新的提交對象,形成一條線性的提交歷史。

????????這種方式使提交記錄更簡潔,適合個人在推送到遠程前整理本地分支,但需注意避免對已共享的遠程分支執行 rebase,以免導致團隊協作沖突。

????????例如,將?feature?分支變基到?main?分支后,歷史記錄會變成一條直線,隱藏分支分叉的過程。Rebase?的優勢在于生成清晰的線性歷史,便于快速瀏覽和理解代碼演進,但其本質是「歷史重寫」,操作時需格外謹慎。

4.Reset重置使用

? ? ? ? 簡單來說:git reset?是 Git 中用于撤銷提交或移動分支指針的核心命令,其本質是通過修改分支指針的指向來改變當前工作目錄的狀態。根據不同的參數,它可以精確控制撤銷的范圍(僅修改提交歷史、重置暫存區或同時回滾工作目錄)。

? ? ? ? 詳細來說:Git 的git reset命令用于撤銷提交或移動分支指針,通過修改分支指針的指向來改變工作目錄狀態,

????????其核心參數有三種模式:

????????--soft僅移動分支指針,保留暫存區和工作目錄,撤銷的提交內容仍可直接提交;

????????--mixed(默認)移動分支指針并重置暫存區,保留工作目錄,需重新git add才能提交;

????????--hard則徹底回滾,移動分支指針、重置暫存區并丟棄工作目錄的修改,可能導致永久丟失數據。

????????此外,--keep模式會在回滾時自動儲藏未提交的修改,重置后可恢復。

????????git reset適用于本地未推送的錯誤提交,但需避免對已共享的遠程分支使用,以免引發協作沖突。與git revert不同,reset是刪除提交記錄,而revert是創建新提交來撤銷舊提交。

三、Android studio的Git工作區使用

????????Git管理代碼分為工作區間、暫存區和版本庫三個區域,我們在工作區間寫代碼,寫完之后需要將創建的文件或修改的代碼添加到暫存區,然后才能提交到版本庫,我們不能把工作區間的修改直接提交到版本庫。

1.工作區(Working Directory)即項目在磁盤上的實際文件,包括你正在編輯的代碼。初始狀態下,Git 不會跟蹤未添加的新文件。

2.暫存區(Staging Area)也稱為索引(Index),是一個中間區域,用于準備提交的內容。可以選擇部分文件或文件的部分內容添加到暫存區。

3.本地倉庫(Local Repository)存儲已經提交的歷史版本,包含提交對象和引用。

4.遠程倉庫(Remote Repository)托管在 GitHub、GitLab 等平臺的共享倉庫。

在 Android Studio 中使用 Git 工作區

1. 初始化 Git 倉庫

  • 操作步驟:VCS → Enable Version Control Integration → 選擇 Git

  • 此時項目根目錄會生成一個隱藏的.git文件夾

2. 添加文件到暫存區

  • 操作 1:通過 Git 菜單提交

    • 選擇需要提交的文件(變更列表中顯示)

    • 右鍵 → Git → Commit File...

    • 在彈出的對話框中,未勾選的文件僅添加到暫存區

# 添加單個文件到暫存區
git add app/src/main/java/com/example/MainActivity.java# 添加所有修改的文件到暫存區
git add .# 添加特定目錄下的所有文件
git add app/src/    

3. 提交到本地倉庫

  • 操作 2:在 Commit 對話框中

    1. 填寫提交信息

    2. 點擊 Commit 按鈕(僅提交到本地倉庫)

    3. 點擊 Commit and Push 可直接推送到遠程倉庫

4. 推送到遠程倉庫

  • 操作 3:Push 操作

    1. VCS → Git → Push

    2. 選擇遠程倉庫和分支

    3. 點擊 Push 按鈕

5. 撤銷操作

  1. 撤銷工作區修改:右鍵文件 → Git → Revert

  2. 撤銷暫存區文件:使用git reset HEAD <file>

  3. 撤銷提交:使用git revert <commit>創建一個反向提交

四、Git總結

????????Git 是一種分布式版本控制系統,

????????其基本使用流程包括:

????????首先通過git clone將遠程倉庫克隆到本地作為工作目錄,在本地進行文件的添加或修改;若遠程倉庫有更新,使用git pull同步內容;

????????本地修改后,通過git status查看狀態,使用git add將修改添加到暫存區,再用git commit提交到本地倉庫,若提交有誤可通過git resetgit revert撤回并重新提交,最后使用git push將本地修改推送到遠程倉庫。

????????Git 以鍵值對方式存儲文件,其中值的類型有 blob、tree、commit,git add會生成 blob 對象并存于.git/objects目錄,暫存區信息保存在.git/index文件中;git commit會依據暫存區內容生成提交對象和樹對象,更新當前分支指針。

????????Git 的合并方式有 Merge 和 Rebase,Merge 通過創建新的合并提交整合分支,保留分支歷史路徑,Rebase 則將當前分支的提交復制到目標分支末尾,形成線性提交歷史。

????????git reset用于撤銷提交,有--soft--mixed--hard等模式。在 Android Studio 中使用 Git,可通過 VCS 菜單啟用版本控制、添加文件到暫存區、提交到本地倉庫、推送到遠程倉庫,還能通過右鍵操作撤銷工作區修改、使用命令撤銷暫存區文件或提交。

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

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

相關文章

【github】想fork的項目變為私有副本

在 GitHub 上&#xff0c;所有的 fork 都會繼承其上游倉庫&#xff08;upstream&#xff09;的可見性&#xff08;visibility&#xff09;設置&#xff1a; 可見性繼承 如果你 fork 的原倉庫是 public&#xff0c;那么你的 fork 也必須是 public。如果原倉庫是 private&#xf…

微軟發布新一代存儲優化型虛擬機:Azure Laosv4、Lasv4 和 Lsv4 系列

微軟宣布&#xff0c;全新一代存儲優化型虛擬機——Azure Laosv4、Lasv4 和 Lsv4 系列已正式面世。 與前一代虛擬機系列相比&#xff0c;全新的 L 系列虛擬機實現了重大突破。它支持高達 23TB 的本地 NVMe SSD&#xff0c;在 CPU、網絡以及遠程存儲性能方面均有顯著提升。該系…

python調用pybind11導出的pyd,出現UnicodeDecodeError

python調用pybind11導出的pyd&#xff0c;出現UnicodeDecodeError 1. 問題描述 舉個例子&#xff0c;當有以下C代碼以及Pybind11的綁定代碼時&#xff0c;在python訪問包含中文的Name和Value會有UnicodeDecodeError的異常&#xff01; class VxUserProp{public:VxUserProp();…

MySQL別名在GROUP BY中的使用規則

-- 設置變量&#xff1a;SET earliest_date ... 用于定義并賦值一個用戶變量 earliest_date。 -- 用戶定義的變量必須以 符號開頭&#xff0c;例如 earliest_date。 -- 符號是MySQL中用戶變量的標識符&#xff0c;用于區分系統變量和用戶變量。 SET earliest_date (SELECT …

2025.7.4總結

感恩環節:感謝今日工作順利度過&#xff0c;明天終于能美美的睡個懶覺了。感謝這周有個美好的雙休。今日去實驗室參觀設備&#xff0c;感謝我的一個同事解答了我關于硬件設備與所做軟件業務之間的關系&#xff0c;通過控制器控制網元等相關設備&#xff0c;同時&#xff0c;雖然…

Prompt 精通之路(五)- 構建你的“AI 指令系統”:超越簡單提問的 CRISPE 與 APE 框架

&#x1f680; Prompt 精通之路&#xff1a;系列文章導航 第一篇&#xff1a;[本文] AI 時代的新語言&#xff1a;到底什么是 Prompt&#xff1f;為什么它如此重要&#xff1f;第二篇&#xff1a;告別廢話&#xff01;掌握這 4 個黃金法則&#xff0c;讓你的 Prompt 精準有效第…

#NFT藝術品哈希值唯一性與《民法典》“網絡虛擬財產”認定的沖突

首席數據官高鵬律師數字經濟團隊創作&#xff0c;AI輔助 一、當區塊鏈的「絕對唯一」遇上法律的「彈性空間」 每個NFT藝術品背后的哈希值&#xff0c;都像用數學密碼刻在區塊鏈上的指紋——世界上沒有任何兩個完全相同的編碼。這種由0和1構筑的「數字DNA」&#xff0c;被技術信…

【arXiv2025】計算機視覺|即插即用|LBMamba:革新視覺模型效率,性能炸裂

論文地址&#xff1a;https://arxiv.org/pdf/2506.15976 代碼地址&#xff1a;https://github.com/CiaoHe/bi-mamba 關注UP CV縫合怪&#xff0c;分享最計算機視覺新即插即用模塊&#xff0c;并提供配套的論文資料與代碼。 https://space.bilibili.com/473764881 摘要 Mamba…

【狂飆AGI】第7課:AGI-行業大模型(系列1)

目錄 &#xff08;一&#xff09;服裝史的GPT時刻&#xff08;二&#xff09;AI多學科診療系統&#xff08;三&#xff09;醫療大模型&#xff08;四&#xff09;生物醫藥大模型&#xff08;五&#xff09;教育大模型&#xff08;六&#xff09;心理大模型&#xff08;七&#…

(LeetCode 每日一題) 3307. 找出第 K 個字符 II (位運算、數學)

題目&#xff1a;3307. 找出第 K 個字符 II 思路&#xff1a;位運算&#xff0c;時間復雜度0(logk)。 當2^(i-1) <k 且 2^i>k &#xff0c;說明k在K2^i的右半段 &#xff0c;k和其前半段的某個字符有關系 即當k>K時&#xff0c;k是由k-K位置上的字符變化而來&#xf…

國產MCU學習Day4——CW32F030C8T6:獨立看門狗功能全解析

CW32F030C8T6 看門狗功能概述 CW32F030C8T6 是芯源半導體&#xff08;WCH&#xff09;推出的 Cortex-M0 內核微控制器&#xff0c;內置獨立看門狗&#xff08;IWDG&#xff09;和窗口看門狗&#xff08;WWDG&#xff09;&#xff0c;用于檢測和恢復系統異常狀態。 一.獨立看門…

SAP升級過程中如何確保數據安全?

目錄 升級過程中可能遇到的數據風險 升級前的準備工作 升級過程中的保護措施 升級后的驗證工作 在數字化轉型浪潮中&#xff0c;SAP系統作為企業核心業務運營的系統&#xff0c;其升級過程不僅關乎技術架構的革新&#xff0c;更直接關系到企業最寶貴的資產——數據安全。一…

Vue 3 + Element Plus 常見開發問題與解決方案手冊

&#x1f31f;Vue 3 Element Plus 常見開發問題與解決方案手冊 &#x1f9e0; 本文整理了常見但容易混淆的幾個 Vue 3 前端開發問題&#xff0c;包括插槽、原型鏈、響應式數據處理、v-model 報錯、樣式陰影控制等&#xff0c;建議收藏學習&#xff01; &#x1f4cc;一、動態插…

Spring Boot + 本地部署大模型實現:安全性與可靠性保障

在將大語言模型集成到 Spring Boot 應用中時&#xff0c;安全性和可靠性是兩個關鍵因素。本地部署的大模型雖然提供了強大的功能&#xff0c;但也可能帶來一些安全風險&#xff0c;如數據泄露、模型被惡意利用等。本文將介紹如何在 Spring Boot 應用中保障本地部署大模型的安全…

Zookeeper 客戶端 .net訪問框架 ZookeeperNetEx項目開發編譯

一、項目簡介 ZooKeeperNetEx 項目是一個針對.NET開發的異步客戶端庫&#xff0c;旨在為開發者提供高效且可靠的分布式協調服務。? 該項目完全基于任務異步編程&#xff0c;兼容.NET 4.61及以上版本&#xff0c;包括.NET Core。ZooKeeperNetEx嚴格遵循官方Java客戶端的邏輯&am…

【學習筆記】因果推理導論第2課

因果推理導論第2課 因果推斷假設 前言一、假設1、 Ignorability / Exchangeability2、條件可交換 二、估計 前言 第一節課通過一些例子說明了為什么要做因果推斷,以及通過控制混雜因素計算因果效應;這一節課將圍繞為何控制混雜因素計算因果效應這一方法成立,講述其涉及到的一些…

VASP 教程:VASP 機器學習力場微調

機器學習力場&#xff08;Machine-Learned Force Fields, MLFFs&#xff09;作為一種新興的計算方法&#xff0c;已在第一性原理分子動力學&#xff08;Ab Initio Molecular Dynamics, AIMD&#xff09;模擬中展現出獨特優勢&#xff08;參見 VASP Wiki&#xff1a;Category:Ma…

Java+Vue開發的倉庫管理系統,實時監控庫存,精準統籌貨物出入與調配

前言&#xff1a; 在當今競爭激烈的商業環境中&#xff0c;高效的倉庫管理對于企業的運營和成本控制至關重要。一個完善的倉庫管理系統能夠幫助企業實現貨物的精準存儲、快速出入庫、實時庫存監控以及全面的數據分析&#xff0c;從而提升整體運營效率、降低庫存成本、增強客戶…

【王陽明代數】熱門問答,什么是張量?

【王陽明代數】熱門問答&#xff0c;什么是張量&#xff1f; 流形學習基礎概念前情提要&#xff0c;張量概念的提出&#xff0c;王船山流形與信息容量的概念回答&#xff1a;什么是張量前&#xff0c;對王船山流形&#xff0c;意氣實體的定義再表述&#xff1b;王船山流形分析1…