+ 在一個沒有版本控制的目錄上,選擇Create repository here... – 會詢問要建立工作目錄,還是要建立資料庫目錄(bare   repository) – 工作目錄:目錄下建立一個目錄 .git,裡面有版本資訊 – 資料庫...
+ 在工作目錄上,選擇Add...  – 選擇未受版本控制的檔案,按OK後加入  – 加入後的檔案會存到index中
+ 在工作目錄上,選擇Check for modifications...  – 可以看到目前的狀態是Added,但這個變動尚未commit  – 這裡顯示的是index中的狀態
+ 在工作目錄上,選擇Commit -> “master”  – master也就是svn所謂的trunk  – 輸入說明按OK就可上傳
+ 在工作目錄上,按Diff  – 會列出修改檔案的列表,點兩下就會進入比較程式
+ 在工作目錄上,按Stash Save  – 會將目前整個目錄的狀態存到暫存區中,包含    修改、新增、刪除的檔案  – 工作目錄的狀態會revert成最新版本的狀態
+ 在工作目錄上,按Stash Pop  – 工作目錄的狀態會變成Stash Save的狀態
+ 在工作目錄上按Show log  – 會顯示歷次上傳說明  – 以下圖為例,有一次「錯誤的上傳」及一次    「無關的上傳」
+ 假設目前的版本如下  – 在硬碟中看到的狀態是A2,B2,C2     原始版本   錯誤的上傳   無關的上傳   未儲存修改      A1      A2      A2     A2      B1      B1      B2 ...
+ 在Log Message中,選擇最早的記錄,按右鍵,選 擇Reset master to this...
+ Soft   – 修改過的檔案不會改變,新增的檔案會變成added狀態   – 檔案內容維持A2,B2,C2+ Mixed  – 修改過的檔案不會改變,新增的檔案會變成    unversioned狀態  – 檔案內容維持A2,B2,C2+...
+ 在上傳時,將”Amend Last Commit”打勾  – 新增、刪除、修改的檔案,會加入最後一次的上傳記    錄中
+ 在工作目錄上,選擇Create Tag  – 輸入Tag name,例如v2.03,並輸入說明文字  – 打開Log可以看到那個版本被加上Tag  – 在log上按右鍵,可以刪除指定的tag
+ 在工作目錄上,選擇Show Log  – 在要刪除的Tag上按右鍵,選Del  refs/tags/v2.03
+ 在工作目錄上,選擇Create Branch  – 輸入名稱及訊息
+ 在工作目錄上,選擇Switch/Checkout...  – 選擇branch – 切換branch後,Commit後面的文字會改變
+ 過去的版本也可以視為branch
+ 有檔案修改卻沒有commit,會出現錯誤訊 息:可能被覆蓋
+ 先切換到master branch+ 在工作目錄上,選擇Merge...  – 選擇要合併的branch
+ 合併過程如果發生衝突,就不會commit  – 要手動將conflict解決,再自行commit
+ 在工作目錄上,選擇Resolve  – 編輯每一個衝突的檔案,並解決衝突  – 全部編輯完成後,按OK,會顯示衝突解決的訊    息
+ commit變更後   – 在Log中會看到branch上傳的記錄也加進來了   – merge後,branch仍然獨立存在,還是可以切換過去繼     續編輯   – 如果後悔了,取消上傳記錄的方法與前面相同            com...
+ 也可以將master branch修改的地方,合併到 test branch上
+ 假設在C2版本時作了一次branch  – 在branch上,我commit了兩次C5,C6  – 在master上,另一個人commit了兩次C3,C4                                C4         ...
+ 一般的merge  – 將master合併到branch上:                           C4                    C3                         [master]     C...
+ Rebase   – 將分支後的所有commit,製作成patch檔   – 將分支狀態改成master最新狀態   – 將所有patch檔依序套用上去       如果過程中有conflict,要解決掉才能繼續 – 原有的C5,C6版本...
+ Rebase的優點   – 使merge後的log tree變的比較簡潔+ Rebase的缺點   – 對server上的branch進行rebase,可能導致混亂,     因為rebase會刪除合併後的commit
+ 在工作目錄上,選擇Diff或Check for modifications  – 在要忽略的檔案上按右鍵,選Add to ignore list
+ 在工作目錄上,選擇Clean up...  1. 清除所有未受版本控制的檔案、資料夾  2. 清除未受版本控制,也未標記成ignore的檔案、     資料夾  3. 清除標記成ignore的檔案、資料夾
+ 在工作目錄中,選擇Pull...  – url選擇另一個資料庫的url  – 則會進行pull merge               C2_G6                                    app   本來的資料...
+ 在任意空目錄上,選擇Clone...  – 類似於svn checkout
+ 在工作目錄上,選擇Pull...  – 類似於svn update  – 可以指定遠端的branch
+ 在工作目錄上,選擇Push...  – 類似svn commit
+ Git每個目錄是一個獨立的repository,Svn則是    一個repository下有多個目錄+   Git對於branch/tag的彈性比Svn要大,無 論新    建、切換或合併+   Git因為資料庫放本地端,所以速度非常快,...
+   空行或以 # 開頭的行會被忽略+   以 / 結尾代表目錄+   以 ! 開頭表示即使符合條件,也要追蹤+   可以用簡單的regular expression    – *.[oa] 表示所有副檔名為 .o 或 .a 的檔案    –...
Unversioned                 Normal              reset HEAD^                             (new)               Staged        ...
Normal                   Normal                          (new) edit        revert                            commit       ...
reset HEAD^                                 Tracked &          UnversionedNormal             reset HEAD^                  ...
00 git
00 git
00 git
00 git
00 git
00 git
00 git
00 git
00 git
00 git
00 git
00 git
Upcoming SlideShare
Loading in...5
×

00 git

408

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
408
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "00 git"

  1. 1. + 在一個沒有版本控制的目錄上,選擇Create repository here... – 會詢問要建立工作目錄,還是要建立資料庫目錄(bare repository) – 工作目錄:目錄下建立一個目錄 .git,裡面有版本資訊 – 資料庫目錄:將 .git 目錄下的內容直接放在這個目錄下
  2. 2. + 在工作目錄上,選擇Add... – 選擇未受版本控制的檔案,按OK後加入 – 加入後的檔案會存到index中
  3. 3. + 在工作目錄上,選擇Check for modifications... – 可以看到目前的狀態是Added,但這個變動尚未commit – 這裡顯示的是index中的狀態
  4. 4. + 在工作目錄上,選擇Commit -> “master” – master也就是svn所謂的trunk – 輸入說明按OK就可上傳
  5. 5. + 在工作目錄上,按Diff – 會列出修改檔案的列表,點兩下就會進入比較程式
  6. 6. + 在工作目錄上,按Stash Save – 會將目前整個目錄的狀態存到暫存區中,包含 修改、新增、刪除的檔案 – 工作目錄的狀態會revert成最新版本的狀態
  7. 7. + 在工作目錄上,按Stash Pop – 工作目錄的狀態會變成Stash Save的狀態
  8. 8. + 在工作目錄上按Show log – 會顯示歷次上傳說明 – 以下圖為例,有一次「錯誤的上傳」及一次 「無關的上傳」
  9. 9. + 假設目前的版本如下 – 在硬碟中看到的狀態是A2,B2,C2 原始版本 錯誤的上傳 無關的上傳 未儲存修改 A1 A2 A2 A2 B1 B1 B2 B2 C1 C1 C1 C2
  10. 10. + 在Log Message中,選擇最早的記錄,按右鍵,選 擇Reset master to this...
  11. 11. + Soft – 修改過的檔案不會改變,新增的檔案會變成added狀態 – 檔案內容維持A2,B2,C2+ Mixed – 修改過的檔案不會改變,新增的檔案會變成 unversioned狀態 – 檔案內容維持A2,B2,C2+ Hard – 所有檔案回到指定的版本 – 檔案內容變成A1,B1,C1
  12. 12. + 在上傳時,將”Amend Last Commit”打勾 – 新增、刪除、修改的檔案,會加入最後一次的上傳記 錄中
  13. 13. + 在工作目錄上,選擇Create Tag – 輸入Tag name,例如v2.03,並輸入說明文字 – 打開Log可以看到那個版本被加上Tag – 在log上按右鍵,可以刪除指定的tag
  14. 14. + 在工作目錄上,選擇Show Log – 在要刪除的Tag上按右鍵,選Del  refs/tags/v2.03
  15. 15. + 在工作目錄上,選擇Create Branch – 輸入名稱及訊息
  16. 16. + 在工作目錄上,選擇Switch/Checkout... – 選擇branch – 切換branch後,Commit後面的文字會改變
  17. 17. + 過去的版本也可以視為branch
  18. 18. + 有檔案修改卻沒有commit,會出現錯誤訊 息:可能被覆蓋
  19. 19. + 先切換到master branch+ 在工作目錄上,選擇Merge... – 選擇要合併的branch
  20. 20. + 合併過程如果發生衝突,就不會commit – 要手動將conflict解決,再自行commit
  21. 21. + 在工作目錄上,選擇Resolve – 編輯每一個衝突的檔案,並解決衝突 – 全部編輯完成後,按OK,會顯示衝突解決的訊 息
  22. 22. + commit變更後 – 在Log中會看到branch上傳的記錄也加進來了 – merge後,branch仍然獨立存在,還是可以切換過去繼 續編輯 – 如果後悔了,取消上傳記錄的方法與前面相同 commit
  23. 23. + 也可以將master branch修改的地方,合併到 test branch上
  24. 24. + 假設在C2版本時作了一次branch – 在branch上,我commit了兩次C5,C6 – 在master上,另一個人commit了兩次C3,C4 C4 C3 [master] C1 C2 C6 C5 [branch]
  25. 25. + 一般的merge – 將master合併到branch上: C4 C3 [master] C1 C2 C7 C5 C6 [branch]
  26. 26. + Rebase – 將分支後的所有commit,製作成patch檔 – 將分支狀態改成master最新狀態 – 將所有patch檔依序套用上去  如果過程中有conflict,要解決掉才能繼續 – 原有的C5,C6版本,則會被清除掉 C4 C6’ C3 C5’ [master] [branch] C1 C2 C5 C6
  27. 27. + Rebase的優點 – 使merge後的log tree變的比較簡潔+ Rebase的缺點 – 對server上的branch進行rebase,可能導致混亂, 因為rebase會刪除合併後的commit
  28. 28. + 在工作目錄上,選擇Diff或Check for modifications – 在要忽略的檔案上按右鍵,選Add to ignore list
  29. 29. + 在工作目錄上,選擇Clean up... 1. 清除所有未受版本控制的檔案、資料夾 2. 清除未受版本控制,也未標記成ignore的檔案、 資料夾 3. 清除標記成ignore的檔案、資料夾
  30. 30. + 在工作目錄中,選擇Pull... – url選擇另一個資料庫的url – 則會進行pull merge C2_G6 app 本來的資料夾 合併對象的資料夾 C2_G6 MVP Base app pull Customer Base merge lib lib Customer drv drv
  31. 31. + 在任意空目錄上,選擇Clone... – 類似於svn checkout
  32. 32. + 在工作目錄上,選擇Pull... – 類似於svn update – 可以指定遠端的branch
  33. 33. + 在工作目錄上,選擇Push... – 類似svn commit
  34. 34. + Git每個目錄是一個獨立的repository,Svn則是 一個repository下有多個目錄+ Git對於branch/tag的彈性比Svn要大,無 論新 建、切換或合併+ Git因為資料庫放本地端,所以速度非常快,而 且很適合離線工作+ Git以SHA-1 checksum作為版本號,Svn則以連 續的數字作為版本號+ Git submodule與Svn external類似,但功能不明
  35. 35. + 空行或以 # 開頭的行會被忽略+ 以 / 結尾代表目錄+ 以 ! 開頭表示即使符合條件,也要追蹤+ 可以用簡單的regular expression – *.[oa] 表示所有副檔名為 .o 或 .a 的檔案 – [0-9] 表示符合字元0~9+ Example – *.[ao] #忽略 .a 及 .o 檔 – Build/ #忽略Build目錄下所有檔案 – *.svn #忽略副檔名 .svn 的檔案
  36. 36. Unversioned Normal reset HEAD^ (new) Staged (Added)
  37. 37. Normal Normal (new) edit revert commit resetModified Staged add
  38. 38. reset HEAD^ Tracked & UnversionedNormal reset HEAD^ Removed & Existed delete commit commit revert UnversionedMissing reset Deleted & Deleted

×