設定完成,是時候去了解一下 Git 是什麼,公式化介紹不說,來點不一樣吧。簡單地形容的話,GitHub 是 Open Source 世界入口,Git 是個管理 source code 工具,實際上是怎麼一回事呢?這裡不會單獨講解 Git ,網上可以找到很多教學,這裡會混合 Eclipse + Egit + GitHub 講解及實際操作。
技術環環相扣,要在這個迴圈找個切入點,需要反覆看幾次及動手練習,才會理解怎用。GitHub 是建立於 Git 之上,所以想跳步直接用 GitHub,終有一天會碰釘,還是老實一點從 Git 學起。
基本慨念
首先,大約是這樣吧,在認知上,應該有這些東西存在。有伺服器 (server side),有用戶 (client side),每一邊都有各自的 Git 管理檔案,兩者之間有互動。
滙入 Project
兩邊怎互動?這個先放一邊去,先攪清楚 Eclipce workspace 跟 Local Git Repo 在做什麼。
上一回說過,只差一步由 Working Tree 那裡 Import 到 Eclipse workspace。所以在【Working Tree】那裡右鍵,選【Import Projects】。
Import source 就是現在 Local Git Repo 裡的 Working Tree,按【Finish】。
好了,終於看到熟識的【Package Explorer】有東西,Import 到 Eclipse workspace 這步完成。
PS: 建立【Project】時,會自動生成【.project】這個檔案。【.project】是什麼? 請 Google。
———————————簡易的分隔線————————————
然後呢?那個 Eclipse workspace 跟 Local Git Repo 的關係是?別心急,Egit 還有一個 View 沒有解說過——【Git Staging】。
EGit Staging 周期流程
- EGit 的【Unstaged Changes】,相等於 EGit Help 文件內的【Untracked files】。
- EGit 的【Staged Changes】,相等於 EGit Help 文件內的【Tracked files】。
- EGit 的【Add to Index】,相等於 EGit Help 文件內的【Add a file】。
- EGit 的【Remove from Index】,相等於 EGit Help 文件內的【Remove a file】。
最後就是 commit 入 Local Git Repo,還有 Push 上 GitHub。
commit 的檔案一定是 【Staged Changes】的,沒做【Add to Index】這步,會有提示訊息。
【Commit Message】很重要,這個跟你能不能找回特定版本有重大關係,別留空或亂寫,想清楚才好,網上有很多建議,可以去參考一下。先熟習 EGit,亂來就亂來吧,經驗就是這樣累積下來。
【Commit and Push】,別亂按!在熟習 Local Git 操作前,就忍耐一下。
順便補充,【Committer】是上一回設定【user.name】及【user.email】的産物。
不 Push 就不會上傳到 GitHub 的 【Remote Git Repo】!所以這裡怎改怎玩,最後把整個 Local Repo 刪除就沒事發生過。
Recording Changes in the Repository
http://wiki.eclipse.org/EGit/User_Guide#Recording_Changes_in_the_Repository
EGit 檔案結構
在 Windows 下,git 的結構是怎樣呢?
【.git】這個資料,入面的東西是 git 的管理用資料,有什麼及怎樣用,不知道也可以,因為是給 git 程式用。細心留意,最下面的【Git Repositories】己經分好 【A:\javatoybox\GitHub_Local_Repo\OOAD\.git】 及 【A:\javatoybox\GitHub_Local_Repo\OOAD】兩部份,現在只需要關心【Working Tree】這個。
———————————簡易的分隔線————————————
操作測試
事前準備
反正都要試【Staging Lifecycle】,把所有東西都攤開來試。開始之前,先把 View 調整好……擺陣!
在【Working Tree】會發現,跟 Windows 內的布置不同,少了一個 project 檔案,請跟上圖做,在【Working Tree】右鍵,選【Add to Index】。
按下拉選單,再按【Filters…】。
把【.* resource】取消打勾。
現在的【Project Explorer】對比【Working Tree】及 Windows 視窗,該出現的檔案都出現 。【.git】資料夾就放棄吧,那東西顯示在【Project Explorer】也沒用,無視。
希望跟上圖一樣,把視窗縮小及移好位置。
所有準備都做好,布陣完成。
———————————簡易的分隔線————————————
動手測試
這個測試是為了理解【Staging Lifecycle】及 EGit 的 GUI 介面。
- GUI 的連動狀況
- GUI 如何表示 Staging Lifecycle
測試 windows 視窗新增檔案會怎樣。
名字為【egit_test_on_windows】。
好像不會即時更新,要過一段時間才出現新增的檔案。這時候可以手動去 Refresh view。
更新完【Project Explorer】及【Local Git Repo】後,大約是這樣。
首先,新增的檔案都有在 Git Repo view 及 Project Explorer view 中出現,證明即使在 Eclipse 外,直接新增檔案也能反映在 Eclipse 中。
然後,發現【Git Staging】中,【Unstaged Changes】有新加檔案。
很正常,跟據【Staging Lifecycle】,這是一個【Untracked files】。
知道是【Untracked files】怎做?當然是把檔案弄做【tracked files】。發現【Project Explorer】的小圖示會由【藍色問號】轉做【綠色加號】,小圖示是有意義的,參考 Help 文檔之餘,也親手試試,參透一下。
Icon Decorations
http://wiki.eclipse.org/EGit/User_Guide#Icon_Decorations
———————————簡易的分隔線————————————
新增檔案試過,現在測試修改檔案,看看在 GUI 有什麼變化。
開啟檔案後,寫點什麼,然後 save,回到【Project Explorer】,右鍵 --> 選 Refresh。
修改檔案後,多了這些。【>】在icon旁邊有什麼義意? 回去看 Help 文檔,再實際體驗多幾次就會明白。
有【Untracked files】怎做?了解【Staging Lifecycle】,做多幾次【Add to Index】,用腦想一想。
新增及修改都試過,最後試刪除。把檔案刪除後,回 Eclipse 去 Refresh 【Project Explorer】及【Working Tree】兩個View。
檔案刪了,【Untracked files】出現一個帶灰色【X】小圖示的檔案。有【Untracked files】,懂怎樣做吧……
———————————簡易的分隔線————————————
在 Windows 視窗都做過新增、修改及刪除。現在試一下在【Working Tree 】及【Project Explorer】做一次同樣的事。
先在【Working Tree 】新增檔案看看……
跟本沒有【新增】這個選項。
有刪除檔案。要修改的話,在要改的檔案右鍵,選【Open in Editor】。
嘗試修改【.gitignore】。然後按【CTRL + S】儲存檔案。
在 Windows 資料夾修改檔案,要回 Eclipse 手動 Refresh View,但在 Eclipse 裡修改就不用這樣做,【Git Repositories】view 會即時自動更新。
———————————簡易的分隔線————————————
同樣的測試,在【Project Explorer】再做一次。新增、修改及刪除檔案……因為不需手動更新 View,省很多步驟。
———————————簡易的分隔線————————————
做過那麼多測試,總結一下︰
- 有好幾個地方可以做【Add to Index】,效果都一樣,看個人喜好及習慣使用︰
- 【Project Explorer】的 [project] 右鍵 --> 【Team】 -->【Add to Index】
- 【Git Staging】的【Unstaged Changes】右鍵 -->【Add to Index】
- 【Git Repositories】的【Working Tree】右鍵 --> 【Add to Index】
以上三種方法,本篇文章都有附加圖片示範過。 - 在 Windows 資料夾做改動,回到 Eclipse 要 Refresh view ,而在【Project Explorer】或【Working Tree 】做改動,則會自動更新 View。
- 【Working Tree 】跟【Project Explorer】互通,而且【Project Explorer】有小圖示表示檔案狀態,【Working Tree 】沒有。
- 在【Project Explorer】右鍵選單,大部份功能都有,包括新增檔案之類,【Working Tree 】的右鍵選單,沒有新增檔案。
結論︰
在【Project Explorer】做所有事,無需在 Windows 資料夾中新增、修改及刪檔,Working Tree 也可以摺疊起來。
不需要每做完一個動作就做【Add to Index】及 Refresh view ,因為要示範所以才會每次都做,所以新增、修改及刪除都做完,一次過做【Add to Index】及 Refresh view 就可以。
下一回【GitHub 及 EGit ( PART 4 / 8 ) + Git Object Model】
沒有留言:
發佈留言
設有留言驗證及審查,檢閱後,才會顯示留言。
本人惰性很高,留言或許會石沉大海。