目錄
前言
Git簡介
git是目前流行的分佈式版本管理系統。它擁有兩套版本庫:本地庫和遠程庫,在不進行合併和刪除之類的操作時這兩套版本庫互不影響。也因此其近乎所有的操作都是本地執行,所以在斷網的情況下任然可以提交代碼,切換分支。git又使用了SHA-1哈希算法確保了在文件傳輸時變得不完整、磁盤損壞導致數據丟失時能立即察覺到。
Git的基本工作流程的示例圖:
相關命令的作用:
- git clone:將遠程倉庫的代碼克隆到本地倉庫
- git checkout:切出分支出來開發
- git add:將文件加入暫存區
- git commit:將暫存區改變的代碼提交到本地代碼庫中
- git push: 將本地倉庫中的代碼提交到遠程倉庫
Eclipse中的Git插件(EGit)簡介
(Eclipse從LUNA版本開始默認支持了GIT客戶端)在Eclipse中安裝Git插件教程:https://blog.csdn.net/qq_32786873/article/details/80917058
Eclipse中對於git的操作都在項目的右鍵菜單中的Team、Replace With、Compare With
中。
如果學習了Git,對於Team中的一些選項都能看名字知道其作用。下圖標註了常用選項的功能:
下面是我學習過程中總結的一些操作。
一、把工程初始化爲本地庫
1.選擇工程→右鍵→Team→Share Project,打開如下頁面:
2.勾選了複選框後進入頁面轉換成這樣:
執行完上圖的操作後,就完成了這個工程的本地庫初始化。在這個工程的目錄中就多了個隱藏的.git文件夾。
二、設置本地庫範圍簽名
1.在Eclipse中,點擊頂部菜單欄的Window–>preferences–>Team–>Git,進入如下頁面:
2.點擊add Entry按鈕,然後在如下頁面添加用戶信息:
3.添加完成後,點擊Apply按鈕即完成了本地庫簽名的配置。
三、Eclipse中Git圖標介紹
1.在Eclipse中,點擊頂部菜單欄的Window–>preferences–>Team–>Git–>Label Decorations,就可以看到Git圖標介紹:
四、忽略Eclipse中的特定文件
Eclipse項目中的特定文件是爲了管理我們創建的工程的文件,包括了.classpath
文件,.project
文件,以及.setting
目錄下的文件。這些文件可以在Navigator視圖下查看:
因爲同一個團隊中很難保證大家都使用相同的IDE工具。而IDE工具的版本不同時,相關工程的特定文件就有可能不同。如果將這些文件加入到版本控制中,就有可能需要花時間解決在合併時的衝突情況。
下面來設置git忽略Eclipse中的特定文件和target目錄(這個目錄下包含的是工程編譯後的字節碼文件)下的文件。
1.首先找到GitHub官網提供的默認的關於Java的配置文件https://github.com/github/gitignore/blob/master/Java.gitignore,然後複製這裏的內容。
這裏直接複製了過來:
# 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*
2.然後在.gitconfig文件的目錄(默認是~/.gitconfig)下,創建一個Java.gitignore
(這裏的名字隨意)文件,然後粘貼上面的內容,並添加以下幾行。
.classpath
.project
.settings
target
3.編輯~/.gitconfig文件引入上面創建的文件,添加內容如下:
[core]
excludesfile = C:/Users/LENOVO/Java.gitignore
注意:這裏路徑中一定要使用“/”,不能使用“\”。
4.然後在Eclipse中打開Window–>preferences–>Team–>Git–>Configuration,查看key是否有core。
可以看到core中的excludesfile配置。此時重啓Eclipse,就能看到上面配置的文件都被Git忽略了。
五、本地庫基本操作
1.選擇Windows–>Show View–>Other,搜索Git Staging。這裏還可以選擇打開Git Reflog等可視化界面。
點擊Open即可打開如下視圖,可以很方面的查看工作區和暫存區的文件情況,也可以快速執行提交和推送操作。
2.將工程添加到暫存區,右擊工程名–>Team->add to index,此時工程的圖標就變成這樣:
3.提交處在暫存區的工程到本地庫,右擊工程名–>Team->commit(快捷鍵ctrl+#),跳出這個頁面(Eclipse版本不同,提交頁面不一樣):
填寫Commit Message後點擊Commit按鈕,即完成提交到本地庫的操作。
其實我們也可以直接執行commit操作,不需要先添加工程到暫存區(index)。
六、將本地工程推送到遠程庫(GitHub)
1.首先在GitHub中創建有一個倉庫,並複製倉庫地址。
2.在Eclipse中,右擊工程名–>Team–>Remote–>Push,打開如下頁面並填寫項目地址和GitHub的賬號和密碼。
3.點擊Next按鈕,進入下面的頁面:
4.然後點Next,在這裏確定推送的結果和具體信息。
最後點擊Finish即完成了推送操作。
七、將遠程庫的工程克隆到本地
下面直接在Eclipse中克隆GitHub中的工程到Eclipse工作區中。
1.頂部導航欄File-->import-->Git-->Projects from git
,點擊Next進入下一步
2.選擇Git倉庫類型:本地庫或遠程庫。這裏選擇Clone URI。點擊Next進入下一步。
3.填寫遠程倉庫的URI,然後點擊Next,選擇分支。
4.選擇完分支後,然後就選擇本地保存的位置(建議保存在Eclipse的工作目錄下),點擊Next進入下一步。
5.選擇如何導入這個工程,選擇Import as general project
。
-
這裏的
Import existing Eclipse Projects
,Eclipse會掃描項目是否有.project文件。當要導入的項目具有Eclipse工程的特定文件(一個完整的Eclipse項目)時可以選擇。 -
而
import using the New Project wizard
,選擇該選項代表項目還沒被eclipse初始化,選擇後點擊finish會打開new Project嚮導,這個嚮導就和eclipse新創建項目步驟一樣。 -
最後我們選擇的
Import as general project
就是將該項目作爲一個普通的項目導入。
最後確認項目名稱,然後點擊Finish後就完成了導入。項目結構如下:
因爲導入的項目不具有運行環境,當我們需要二次開發時,就需要將該項目轉換爲Maven項目。
右擊選中項目名–>Configure–>Convert to Maven Project
這樣項目就變爲由Maven管理的項目了
八、解決衝突
當我們合併分支時,被合併的分支不是在接受合併的分支最新版本上修改(接受合併的分支有了新的提交),就會產生衝突需要我們手動解決,然後再合併。
另外當我們團隊協作時,不是在遠程庫中最新版本上修改時(團隊有人更新了遠程庫),那麼提交時就會出現衝突的情況。此時無法推送,需要我們先pull下來,然後查看並修改衝突的文件。
衝突的文件會用 這個符號進行標識,而衝突的地方會有特殊符號<
,=
,>
,標識,提示哪些是遠程庫上的修改,哪些是自己的修改,像這樣:
<<<<<<< HEAD
System.out.println("right");
=======
System.out.println("left");
>>>>>>> branch 'master' of https://github.com/JustCoding-Hai/testGit.git
}
當我們衝突的地方比較多時,就可以藉助Merge Tool來對比查看。
右擊選中衝突的文件->Team->Merge Tool,打開這樣的頁面:
在這個頁面可以很方便地對比着看衝突的內容,工具欄也提供了許多功能,我們就在左邊修改文件來解決衝突。最後保存後上面的特殊符號會被自動刪除。
然後我們添加到暫存區(add to index)
再提交到本地庫,最後提交到遠程庫。
九、分支操作
Git工作流指在項目開發過程中使用Git的方式。Git工作流包括有集中式工作流、GitFlow工作流和Forking工作流。
我們最常使用的是GitFlow工作流,GitFlow工作流是在項目開發過程通過爲功能開發、發佈準備和維護設立了獨立的分支,讓發佈迭代過程更流暢。
1.分支種類
Git工作流中的分支種類可以包括以下幾個類別:
- 主幹分支 master 。主要負責管理正在運行的生產環境代碼。永遠保持與正在運行的生產環境 完全一致。
- 開發分支 develop 。主要負責管理正在開發過程中的代碼。一般情況下應該是最新的代碼。
- bug 修理分支 hotfix 。主要負責管理生產環境下出現的緊急修復的代碼。 從主幹分支分出,修
理完畢並測試上線後,並回主幹分支。並回後,視情況可以刪除該分支。 - 準生產分支(預發佈分支) release 。較大的版本上線前,會從開發分支中分出準生產分支,進行最後階段的集成測試。該版本上線後,會合併到主幹分支。生產環境運行一段階段較穩定後 可以視情況刪除。
- 功能分支 feature 。爲了不影響較短週期的開發工作,一般把中長期開發模塊,會從開發分支 中獨立出來。 開發完成後會合併到開發分支。
GitFlow工作流示例圖:
2.具體操作
現在操作TestGit和testGit2項目模擬團隊協作時,一個成員添加了分支,另一成員拉取下來並進行合併。
1.創建分支
右擊TestGit項目名–》Team–》Switch to–》New Branch,然後填寫分支名hot_fix。
此時就轉換爲hot_fix分支了。
然後對Banana類進行修改,添加一行代碼。
public class Banana {
public static void main(String[] args) {
System.out.println("this is right");
System.out.println("Edit By branch hot_fix");
}
}
提交到本地庫,再推送該分支到遠程庫。
2.切換分支並審查代碼
這時團隊的另一個成員操作的testGit2項目,就需要pull遠程庫下來,然後選擇:
在這個頁面選擇分支
然後選擇Check out as New Local Branch
這樣就完成了獲取遠程庫中的分支並切換。我們確定這個分支的內容沒有錯誤後就可以進行合併操作了。
3.合併分支
首先切換回master分支
然後執行合併操作
選擇要合併的分支。
點擊Merge按鈕即完成合並。
4.刪除分支
如果是刪除本地分支,選擇Team–》Advanced --》delete branch,選中要刪除的分支,然後點擊OK。
如果要本地操作刪除遠程分支,就選擇Team–>Remote–>Push,在彈出的界面中點擊Next,
在上面頁面下拉選擇要刪除的分支,點擊Add Spec按鈕,點擊finish完成。
十、版本切換與撤銷修改
1.版本切換,選中項目名右鍵,Replace With–>Commit,然後選擇一個commit記錄
2.撤銷修改,撤銷文件的修改,選中文件右鍵,Replace With–>Head Revision。撤銷項目的修改,就選中項目名右鍵執行相同的操作。
總結
使用Git應該保持良好的習慣,即每次開發之前先更新,經常提交,不要一次提交很多文件。這樣基本上的簡單使用就不會出現問題。
最後,上面的相關操作是我看視頻教程總結的,因爲還沒有實際使用經驗,所以許多Git技術點沒有涉及到。需要詳細學習的話可以看一些官方文檔哦:
Git學習:Git-Book
EGit插件的使用:EGit/UserGuide
拓展:IntelliJ IDEA下的使用git