Git版本控制管理


Git是優秀的版本控制管理系統,與傳統的CVS/SVN等集中式版本管理系統不同,Git可以實現項目的分布式協作管理。
整理來源:Intelij IDEA軟件開發與應用 作者:喬國輝
一、下載與安裝:https://git-scm.com/download/win

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 (2)Git Bash Here提供了類Linux環境,開發者可以在指定目錄或位置右擊訪問環境並進行Git相關的管理操作,如圖所示

 

 接下來在IntelliJ IDEA中配置Git。打開IntelliJ IDEA開發工具,執行菜單File→Settings命令打開系統配置窗口並定位到Version Control→Git選項卡。

 

 

 

 (3)Git命令設置用戶名與電子郵件用戶既可以在Git Bash環境下執行此命令,也可以在CMD命令行窗口中執行此命令

git config --global user.name"username'

git config --global user.email "email"
(4)查看不同級別的配置

git config[--local|--global--system] --list
(5)Git提供了命令參數--get用來獲取指定配置項
git config [--locall--system} --get section. key
(6)版本庫、工作區、暫存區

工作區是所有項目文件的集合,其本質是項目工程的根目錄。工作區內部包含了所有的文件,如資源文件、源碼文件等。
版本庫是對工作區中構成項目發布所需要的有效文件的抽取與標識。工作區中有一個隱藏的.git目錄,這個目錄就是Git的版本庫。
Git版本庫包含很多內容,其中最重要的就是暫存區。它存放在.git目錄下的index文件中,所以暫存區也叫index或stage,它主要用於暫存被修改過的文件。
(7)版本庫初始化

使用git init命令對目錄進行初始化操作,此目錄為項目的根目錄,建議最好使用空目錄且路徑中不包含中文與空格
版本庫創建后會生成一個默認分支(主分支),也叫master分支。項目中通常會基於主分支創建一系列子分支,這些子分支圍繞主分支進行擴展並且在合適的時候將自身的特性合並到主分支中。
(8)文件管理
Git中的文件有已跟蹤( tracked)和未跟蹤( untracked)兩種狀態。對於任何一個文件來講,它們首先出現在工作區,然后進入暫存區,最后提交到版本庫成為待發布項目的一部分。
已跟蹤文件是已經加入Git管理的文件,新文件在進入暫存區后即成為已跟蹤狀態。在文件經由暫存區進入版本庫后,即使將其從暫存區清除也依然是已跟蹤狀態,除非將這個文件刪除。
執行git commit命令將暫存區內容提交至版本庫
(9)Git提交

在使用git commit命令進行提交時,Git會在版本庫中生成一個40位的哈希值commit-id,commit-id屬於某次提交的特殊標識。
commit-id相當於快照,它不僅標識了某次具體的提交,而且在進行版本回退時非常有用,用戶可以在未來任意時間點通過git reset命令回退到這里。
git commit命令:

git commit -m[message]
(10)執行git log命令查看提交歷史並按照提交時間由近到遠排序
(11)如果要對所有已加入跟蹤狀態的文件進行提交,則可以使用如下命令:
git commit -a-m[message]
(12)如果用戶已經進行了某次提交,同時又不想保留提交記錄,則可以使用如下命令:
git commit --amend-m[message]
(13)Git文件對比

git diff命令用於在工作區、暫存區和版本庫之間進行文件的差異化對比,其默認命令格式如下:
git diff

要查看暫存區與版本庫之間的差異,可以使用如下命令:
git diff --cached[path]
可以使用git log命令得到某次具體提交的commit-id,然后執行如下命令進行比較:
git diff commit-id[path]

要對比兩次提交之間的差異:
git diff [commit-id][commit-id]
要查看最近n次的提交歷史,如最近2次,可以使用如下命令:
git log-n2[--oneline]
要查看指定分支的提交歷史,可以使用如下命令:
git log [--oneline] branch
要查看指定用戶的提交歷史,可以使用如下命令:

git log--author= user[--oneline]
為了觀察整個版本的演進歷史,還可以使用圖形化的查看方式,命令如下:
git log--graph
此命令在多人多分支開發中特別實用,通過觀察分支的圖形化結構可以

清楚地了解分支的處理過程。

(14)文件恢復
要恢復工作區中的文件內容,可以使用如下命令:
git checkout[--]<path>
此命令可以放棄所有未加入暫存區的修改,即把文件在工作區中的修改全部撤銷。此操作的前提是文件必須為已追蹤狀態,因此被恢復文件至少進入過暫存區。
要恢復暫存區中的文件內容,可以使用如下命令:
git reset HEAD path
如果要放棄暫存區的內容,則可以使用如下命令:
git reset HEAD.
要對提交的版本信息進行回退操作,可以使用如下命令:
git reset[--soft|--mixed|--hard][HEAD][commit-id]
(15)刪除文件
文件存在於工作區、暫存區和版本庫中的某個位置。使用git rm命令可以執行文件的刪除操作,命令如下:
git rm--cached readme.txt
此操作會將暫存區中的文件刪除,同時這個文件將再次被歸類為Untracked文件,但本地工作區中的文件將會被保留。如果用戶需要將工作區中的文件也一起刪除,則可以使用如下命令:
git rm readme.txt
執行此命令后暫存區與工作區中的文件都會被刪除,但刪除之前用戶需要保證文件在工作區、暫存區與版本庫的一致狀態。
二、遠程倉庫
    GitHub與GitLab都是基於Git的代碼倉庫管理軟件,其主要區別在於GitHub倉庫項目基本上是開源的。用戶可以在GitHub上創建私有的代碼倉庫,超過指定數量后將會收取一定的費用,適合於個人開發者和開源項目。GitLab可以在企業內部搭建私有的代碼倉庫,更加適合於企業級的多人協作開發。
    GitHub支持兩種同步方式HTTPS和SSH。其中HTTPS十分簡單,用戶基本不需要配置就可以直接使用,但是每次提交代碼和下載代碼時需要輸入用戶名和密碼進行驗證。
如果要使用SSH方式進行同步,則用戶需要在客戶端生成密鑰對,然后將其中的公鑰放到GitHub服務器上。我們推薦使用基於密鑰的驗證方式。在生成密鑰之前一定要配置user.name與user. email配置項,然后在GitBash環境下執行如下命令:
ssh-keygen-t rsa
三、IntelliJ IDEA下的Git操作
(1)上傳本地項目到遠程倉庫
由於任何工程均可上傳到遠程倉庫,創建過程不再過多描述。打開配置窗口並找到Version Control下的Git選項驗證本地Git是否可以正常使用。
驗證完成后切換到GitHub選項卡,打開Log In to GitHub窗口並輸入用戶名及密碼,如圖所示。

 

 如果用戶沒有GitHub賬戶,則可以單擊Sign up for GitHub進行注冊。輸入用戶名和密碼后單擊Log In按鈕,IntelliJ IDEA會嘗試登錄GitHub,如圖所示。

 

 


登錄成功后會在遠程列表中添加連接配置項
配置完成后打開工程,執行菜單VCS→Import into VersionControl→Share Project On GitHub命令打開上傳工程窗口,指定遠程倉庫的名稱(如果沒有則新建).

單擊Share按鈕確認共享,彈出Add Files Forn Initial Commit初始化提交窗口,用戶根據需要選擇推送到遠程倉庫的文件。
單擊Add按鈕完成添加操作,IntelliJ IDEA會自動執行本地提交並推送到遠程倉庫,操作完成。
查看GitHub遠程倉庫會發現項目已經成功上傳
(2)克隆遠程倉庫
執行菜單File→New→Get from Version Control命令打開克隆窗口,復制遠程倉庫的HTTPS地址並粘貼到URL區域,單擊Clone按鈕執行克隆操作,如圖所示。

 

 

 

 (3)新建文件

在新建文件時IntelliJ IDEA會彈出Add File to Git確認窗口,如果選擇Add操作則將文件添加到暫存區並以綠色標識,如果選擇Cancel操作則當前文件只存放於工作區並以紅色標識,如圖所示。

 

 (4)提交文件

使用快捷鍵CTRL+K打開變更提交窗口,其中Unversioned Files分類下是新建且未添加到暫存區的文件,如圖所示。

 

 

 勾選需要進行提交的文件或目錄,當單擊文件時底部Your version區域會顯示當前文件的變化。因為IntelliJ IDEA操作的目標是變更,因此新建目錄等在提交時並不會顯示。
在Commit Message區域里輸入提交相關信息,單擊Commit按鈕提交變更內容到版本庫,Unversioned Files分類下的文件將同時添加到暫存區並提交到版本庫。
在項目規模較大時可以取消勾選右側的Perform code analysis代碼分析功能和Check TODO (Show All)Configure代碼檢查功能,否則程序會因為檢查內容過多而陷入長時間無響應狀態。
Version Control的Log選項卡中可以看到所有的歷史提交記錄,如圖所示。

 

 

 (6)推送提交至遠程倉庫

使用快捷鍵Ctrl+Shift+K打開推送對話框,如圖所示。

 

 

 注意遠程分支名稱后面的New標識,這意味着遠程分支是不存在的,在推送完成后將會新建同名分支。用戶也可以單擊遠程分支名稱對其進行重命名操作。
(7)Git Pull

執行Git Pull操作,執行菜單VCS→Git→Pull命令獲取遠程更新

 

 

 

(8)Local Changes
Local Changes選項卡列出了本地發生變化的文件,其中DefaultChangelist分類下是已經處於跟蹤狀態的文件,Unversioned Files分類下是未跟蹤的文件,如圖所示。

 

 如果Local Changes中未列出本地發生變化的文件,則可單擊G按鈕進行刷新並重新加載。對於加入Git管理且被刪除的文件將以灰色狀態顯示,對於已經加入Git管理但是未提交到版本庫的文件,由於在刪除時會同時清空暫存區,因此不會顯示在本地列表中。
用戶可以在分類列表中選擇多個文件並單擊Commit按鈕以進行提交操作,還可以單擊Rollback按鈕對Default Changelist分類下的文件進行回退操作,執行回退后文件將恢復至最近提交的狀態,所有未提交內容都將被覆蓋。要查看文件發生了哪些變化,可選擇文件並單擊Show Diff按鈕查看文件差異。
(9)日志列表
Log選項卡列出了所有分支的提交歷史,如圖所示。

 

單擊歷史記錄中的某次提交,可以在右側窗口觀察本次提交發生的變化,雙擊文件后在打開窗口中可以觀察文件具體變更的內容。
(10)版本恢復

要執行Revert操作,則開發者可以選中Log列表中的某次提交,右擊並選擇Revert Commit菜單,如圖所示。

 

 此操作在回退版本內容的基礎上進行了一次新的提交,因此稱其為恢復操作而不是回退操作。要執行回退操作,選擇上圖中的Undo Commit操作。





 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM