8.1、配置Git忽略檔案
8.1.1、忽略檔案的原因
在使用 IDE 工具時,會自動生成一些和專案原始碼無關的檔案,所以可以讓 Git 忽略這些檔案。
此外,把這些無關檔案忽略掉,還能夠遮蔽不同 IDE 工具之間的差異。
8.1.2、建立忽略規則檔案
如上圖所示,在使用者家目錄下建立了一個忽略規則檔案 git.ignore(字首名隨便起,字尾必須是 .ignore,推薦命名為 git.ignore)。
實際上,這個忽略規則檔案在任意位置建立都可以,但為了方便讓 ~/.gitconfig 檔案引用,推薦放在使用者家目錄下。
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
8.1.3、引用忽略規則檔案
如上圖所示,在 .gitconfig 檔案(該檔案的來源見 3.2節 )中,引用(剛建立的)一個忽略規則檔案。
git config --global core.excludesfile 忽略規則檔案路徑/git.ignore
注意:所引用的檔案路徑分隔符,要使用“正斜線(/)”,不要使用“反斜線(\)”。
此外,必須使用執行命令的形式來設定引用檔案,直接在 .gitconfig 檔案中編輯文字內容會導致引用失敗,出現下面的警告:
warning: unable to access 'C:/Users/liaojy/git.ignore': Invalid argument
8.2、定位Git程式
8.2.1、使用IDEA建立一個專案
如上圖所示,建立一個新專案。
如上圖所示,該新專案是一個 maven 專案。
如上圖所示,該專案的名稱設定為 git-test 。
如上圖所示,設定該專案所在的路徑。
8.2.2、選擇本地已安裝的Git程式
如上圖所示,開啟IDEA的 Settings(設定)介面。
如上圖所示,在 Settings(設定)介面中,找到 Git 的設定介面。
如上圖所示,選擇了一個本地已安裝的Git程式,並且測試該 Git 程式是正常的。
8.3、初始化本地庫
8.3.1、檢視專案的資料夾
如上圖所示,右擊專案名,然後點選“Show in Explore”,便能檢視專案的資料夾。
如上圖所示,在專案的資料夾中,並沒有“.git”子資料夾,說明該專案還沒有被 Git 所管理到。
8.3.2、使用IDEA初始化本地庫
如上圖所示,在 VCS(Version Control Settings)選單中點選“Create Git Repository”選項。
在“Create Git Repository”彈窗中,會預設選中當前專案,此時只需要點選“OK”,即可將該專案初始化為 Git 本地庫。
8.3.3、確認初始化本地庫已成功
如上圖所示,在專案的資料夾中,已存在“.git”子資料夾,說明該專案已成功被 Git 所管理到。
注意:如果 8.1 節的忽略規則檔案的配置操作是成功的話,在“.diea”目錄中是沒有".gitignore"的;
否則,IDEA 會在“.diea”目錄中,自動生成一個該專案的忽略規則配置檔案".gitignore",在這個檔案中也可以配置要 Git 忽略的檔案。
如上圖所示,檔名是紅色,說明該檔案已被 Git 檢測到,但是還沒被 Git 追蹤(即該檔案還沒被新增到暫存區)。
8.4、新增到暫存區
注意:必須先初始化本地庫後,才能將檔案新增到暫存區。
8.4.1、將某個檔案新增到暫存區
如上圖所示,右擊要新增到暫存區的檔案,在選單欄裡選擇“Git”->“+Add”,即可將該檔案新增到暫存區。
如上圖所示,將“pom.xml”檔案新增到暫存區後,顏色變成了綠色,即說明該檔案已成功被 Git 追蹤,但還沒有被提交到本地庫。
注意:如果預設的檔案狀態顏色區分不明顯,可以在“Settings”中自定義設定檔案狀態的顏色:
8.4.2、建立一個檔案
如上圖所示,新建立了一個Java檔案“GitTest”,此時 Idea 便會自動彈窗提示是否將這個新建立的檔案加入暫存區。
注意:本例出於演示需要,點選了“Cancel”;在實際情況中,點選“Add”即可。
如上圖所示,雖然該 Java 檔案還沒加入暫存區,但是並不影響其編譯執行使用。
注意:如果在編譯執行時報錯“Error:java: 錯誤: 不支援發行版本 5”,請參考該解決方案。
8.4.3、將整個專案新增到暫存區
如上圖所示,右擊要新增到暫存區的專案,在選單欄裡選擇“Git”->“+Add”,即可將該專案所有檔案(忽略檔案除外)新增到暫存區。
如上圖所示,將整個專案新增到暫存區後,該專案所有檔案(忽略檔案除外)的顏色變成了綠色,即說明這些檔案已成功被 Git 追蹤,但還沒有被提交到本地庫。
8.5、提交到本地庫
注意:必須先將檔案新增到暫存區後,才能將檔案提交到本地庫。
8.5.1、第一次提交
如上圖所示,右擊要提交到本地庫的專案,在選單欄裡選擇“Git”->“Commit Directory”,即可將該專案所有(已新增到暫存區的)檔案提交到本地庫。
如上圖所示,在提交彈窗中,可以看到將要提交到本地庫的檔案有哪些,點選該檔案還能看到具體內容。
在“Commit Message”中填寫提交資訊,然後點選“Commit”按鈕,即可完成提交到本地庫的操作。
如上圖所示,當檔案被提交到本地庫後,檔案的顏色恢復為最原始的黑色。
8.5.2、第二次提交
如上圖所示,已被 Git 追蹤過的檔案,經過修改內容後,檔案顏色會變成藍色。
如上圖所示,因為專案所有的檔案在之前已被追蹤過,所以可以將修改直接提交到本地庫。
如上圖所示,在提交彈窗中,可以看到將要提交到本地庫的檔案有哪些變化。
在“Commit Message”中填寫提交資訊,然後點選“Commit”按鈕,即可完成提交到本地庫的操作。
如上圖所示,當修改後的檔案被提交到本地庫後,檔案的顏色恢復為最原始的黑色。
8.5.3、第三次提交
如上圖所示,已被 Git 追蹤過的檔案,經過修改內容後,檔案顏色會變成藍色。
如上圖所示,因為專案所有的檔案在之前已被追蹤過,所以可以將修改直接提交到本地庫。
如上圖所示,在提交彈窗中,可以看到將要提交到本地庫的檔案有哪些變化。
在“Commit Message”中填寫提交資訊,然後點選“Commit”按鈕,即可完成提交到本地庫的操作。
如上圖所示,當修改後的檔案被提交到本地庫後,檔案的顏色恢復為最原始的黑色。
8.6、切換版本
8.6.1、檢視提交版本資訊
如上圖所示,在 IDEA 底部的 “Version Control”->“Log”介面中,便可看到所有提交的列表,每次提交涉及到了哪些檔案。
此外,還能看到分支指向哪個提交版本,HEAD 指標指向哪個分支。
在本例中,HEAD 指標指向 master 分支,master 分支指向第三次提交版本;因此工作區顯示的是第三次提交的版本內容。
8.6.2、切換到其他的提交版本
如上圖所示,右擊要切換到的提交版本,再點選“ Checkout Revision '版本號' ”,即可切換到該版本。
如上圖所示,點選切換版本後,IDEA 會在該版本建立一個臨時匿名分支,HEAD 指標指向該臨時匿名分支;因此工作區顯示的是該版本的內容。
8.6.3、切換回原來的maser分支版本
如上圖所示,右擊 master 分支指向的提交版本,再點選“Checkout”->“master”,即可切換回原來的maser分支版本。
如上圖所示,切換回原來的maser分支版本後,HEAD 指標指向 master 分支,master 分支指向第三次提交版本;因此工作區顯示的是第三次提交的版本內容。
注意:切換回原來的maser分支版本後,之前 IDEA 為其他版本建立(僅供回看目的)的臨時匿名分支會被自動刪除。
8.7、建立分支
8.7.1、方式一
如上圖所示,右擊要建立分支的專案,在選單欄裡選擇“Git”->“Repository”->“Branches”,即可開啟分支操作的彈窗。
如上圖所示,在分支操作的彈窗中,可以選擇執行三個操作:New Branch(建立新分支)、Checkout Tag or Revision(切換到其他分支)、Local Branches Rename(對分支重新命名)。
注意:後續操作請參考方式二的。
8.7.2、方式二
如上圖所示,IDEA 右下角有當前 Git 分支的名稱,點選即可開啟分支操作的彈窗。
如上圖所示,在建立新分支的彈窗中,輸入新分支的名稱(本例為 hot-fix ,即熱修復的意思),點選 OK 即可建立一個新分支。
“Checkout Branch”核取方塊是預設選中的,意思是建立新分支後,自動切換到新分支。
如上圖所示,建立新分支成功後,IDEA 右下角當前 Git 分支名稱是新分支的名稱,且新分支和 master 分支指向了同樣的提交版本。
8.8、切換分支
如上圖所示,在分支操作的彈窗中,選中要切換到的分支名稱,然後點選“Checkout”即可切換到該分支。
如上圖所示,已成功切換到 master 分支。
8.9、正常合併分支
8.9.1、在hot-fix分支新增內容
如上圖所示,在 hot-fix 分支中,新增了一行內容;經過修改內容後,檔案顏色會變成藍色。
8.9.2、提交hot-fix分支的新增內容
如上圖所示,多了一個提交版本,且 hot-fix 分支指向該提交版本。
8.9.3、切換到master分支
如上圖所示,HEAD 指向了 master 分支,表示現在切換到了 master 分支,這時在工作區已看不到 hot-fix 分支已提交的新增內容。
8.9.4、合併hot-fix分支到當前分支
如上圖所示,點選 IDEA 右下角當前 Git 分支名稱,選擇要合併的分支名稱(本例為 hot-fix ),然後點選“Merge into Current”,即可將 hot-fix 分支合併到當前分支(本例為 master )。
如上圖所示,如果內容沒有衝突,分支直接合併成功,分支合併成功以後,會自動提交,無需再手動提交到本地庫。
8.10、衝突合併分支
8.10.1、在hot-fix分支新增內容
如上圖所示,在 hot-fix 分支中,新增了一行內容;經過修改內容後,檔案顏色會變成藍色。
8.10.2、提交hot-fix分支的新增內容
如上圖所示,多了一個提交版本,且 hot-fix 分支指向該提交版本。
8.10.3、在master分支新增內容
如上圖所示,切換到 master 分支中,新增了一行內容;經過修改內容後,檔案顏色會變成藍色。
8.10.4、提交master分支的新增內容
如上圖所示,又多了一個提交版本,且 master 分支指向該提交版本。
注意:此時 hot-fix 分支和 master 分支分別對同一行做出了不同的修改。
8.10.5、合併hot-fix分支到當前分支
如上圖所示,點選 IDEA 右下角當前 Git 分支名稱,選擇要合併的分支名稱(本例為 hot-fix ),然後點選“Merge into Current”,即可將 hot-fix 分支合併到當前分支(本例為 master )。
如上圖所示,因為 hot-fix 分支和 master 分支分別對同一行做出了不同的修改,合併分支時,IDEA 不知道選擇使用哪個分支的修改是正確的。
因此,需要手動處理 hot-fix 分支和 master 分支,存在衝突的內容。
8.10.6、解決合併衝突
如上圖所示,在手動合併的彈窗中,左側是 master 分支的內容,右側是 hot-fix 分支的內容,中間是手動合併結果的內容。
左右兩側還有操作按鈕:“X”、“>>”和“<<”;“X”表示不將這行衝突內容合併到結果內容中,“>>”和“<<”表示將這行衝突內容合併到結果內容中。
如上圖所示,先後點選了“>>”和“<<”操作按鈕,兩個分支的衝突內容也按順序地合併到結果內容中了。
此外,還出現了一個提示,表示衝突內容已被處理,可以完成合並;這時點選“Apply”按鈕即可完成手動合併衝突的操作。
如上圖所示,合併衝突已解決,且自動提交到了本地庫。