Git and git hub

2,151 views

Published on

A simple introduction for basic use of git and git hub.
Since I'm a rookie to Git, If there is anything wrong, please contact me.
Hope you'll enjoy it.

Published in: Self Improvement
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,151
On SlideShare
0
From Embeds
0
Number of Embeds
838
Actions
Shares
0
Downloads
14
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Git and git hub

  1. 1. Git and Git Hub
  2. 2. This version will no longer be maintained Please checkout the new version of this slide https://lee-w.github.io/git-tutorial/#/
  3. 3. What’s Git  一套版本控制系統
  4. 4. What’s version control?  有沒有code改著改著就回不去了的經驗?
  5. 5. What’s version control?  有沒有code改著改著就回不去了的經驗? 你需要的就是版本控制!!!  打Game要存檔,打Code當然也要存檔!!!
  6. 6. What’s version control?  有沒有code改著改著就回不去了的經驗? 你需要的就是版本控制!!!  打Game要存檔,打Code當然也要存檔!!! 那多複製個幾份不就好了?
  7. 7. What’s version control?  有沒有code改著改著就回不去了的經驗? 你需要的就是版本控制!!!  打Game要存檔,打Code當然也要存檔!!! 那多複製個幾份不就好了? 占空間、難維護
  8. 8. What’s version control?  有沒有code改著改著就回不去了的經驗? 你需要的就是版本控制!!!  打Game要存檔,打Code當然也要存檔!!! 那多複製個幾份不就好了? 占空間、難維護 Git只會記錄每一次有差異的部分,但使用起來就像存了很多檔一樣
  9. 9. Before start  安裝Git  設定基本資料
  10. 10. Install Git For Linux  Fedora  Debian, Ubuntu yum install git-core sudo apt-get install git
  11. 11. Install Git For Mac  使用MacPorts  MacPorts http://www.macports.org/  使用brew  brew http://brew.sh/ sudo port install git-core +svn +doc +bash_completion +gitweb brew install git
  12. 12. Install Git For Windows  http://msysgit.github.com/ 到這裡下載吧!
  13. 13. Set e-mail and name  一開始會要求要設定名稱和email才能使用  一般來說就設定 git hub 或 bitbucket比較好 雖然也可以設定無效的,但push repo上去的時候就會是unknown上傳的  指令:  e.g. git config --global user.name "<Your name>“ git config --global user.email "<Your email>" git config --global user.name user git config --global user.email user@user
  14. 14. Set alias  以自訂的短文字來取代長長的指令 -> 懶人必備!!!  指令:  下面是我設定的alias git config --global alias."command alias" "original command“ git config --global alias.st status git config --global alias.cmt commit git config --global alias.cmtm "commit –m" git config –global alias.br branch
  15. 15. Seting  透過這個指令就能看到我們對git做了哪些設定 git config -- global –l
  16. 16. Let’s start a repo in local  What’s repo  repository , git 都是這麼稱呼它的版本資料庫  將一個專案(其實就是資料夾啦)加入git追蹤 git init
  17. 17. Let’s start a repo in local
  18. 18. Let’s start a repo in local 出現了一個.git的隱藏資料夾!!! 這是儲存git紀錄的地方,沒事不要去動它
  19. 19. Let’s start a repo in local 出現了一個.git的隱藏資料夾!!! 這是儲存git紀錄的地方,沒事不要去動它 這是oh my zsh的功能
  20. 20. Stage  透過這個指令可以看到現在檔案的狀態  不過我們已經透過alias把status 設為st了,所以以後就可以用  那現在就要來講git很重要的四個檔案狀態(stage) git status git st
  21. 21. Stage  總共有分成4個階段 0. untracked (新的檔案,根本還沒加入整個git版本控制的流程內) 1. unmodified (完成add ,但還沒commit) 2. modified (add了之後又修改 ) 3. staged (commit完成 ,從此以後記錄檔就存好了)
  22. 22. Stage - staged  所有東西都已經加入git的追蹤 (其實根本就甚麼東西都還沒有)
  23. 23. Stage - untracked  我們建立一個檔案叫做hi.txt  現在有一個檔案進入untracked了
  24. 24. Stage - unmodified  將新的file加入git 追蹤 git add “file name”
  25. 25. Stage - modified  如果要一次加入很多檔案怎麼辦? 增加了2個檔案
  26. 26. Stage - modified  如果要一次加入很多檔案怎麼辦? git add . 不過不建議這麼做 通常還是一個一個add會比較好
  27. 27. Stage - staged
  28. 28.  讓剛剛的檔案進入stage吧!!!  你會進入一個編輯器,讓你輸入commit Stage - staged git commit 預設的編輯器通常不是這個 可以透過 git config –global core.editor=vim 來設定
  29. 29. Stage - staged  不過開啟編輯器有點麻煩 透過這個指令,就能在指令列完成commit git commit –m “your commit for this change”
  30. 30.  commit 要輸入什麼?  你這次做了甚麼修改?  就是你這次為什麼要存檔啦!!! Stage - staged
  31. 31. Stage - staged  上一個commit錯了,怎麼辦?  你需要的是  修改剛剛commit的內容 git commit --amend
  32. 32.  進入staged之後這份修改就會永遠被存下來  查看之前的commit紀錄 Stage - staged git log 按q可以退出
  33. 33. Stage - modified  如果修改了add過的檔案,就會變成這樣  這時候只要再把它git add進去就可以了
  34. 34. Stage  新增檔案 => 加入 track (git add) => 提交 (git commit) => 繼續加入或修改其他檔案  修改檔案 => 加入 stage (git add) => 提交( git commit ) => 繼續修改其他檔案
  35. 35. Restore  讓檔案回到最後commit的狀態  將檔案回到modified (也就是取消add) git reset “file name” git checkout “file name"
  36. 36. Restore  經過了多次commit,如果想回到很久以前的版本怎麼辦?
  37. 37. Restore  經過了多次commit,如果想回到很久以前的版本怎麼辦? git reset “commit SHA前四碼” 這串就是每個commit自己的SHA
  38. 38. Restore  回到first commit吧!!! 這時候你的修改沒有被消除 只是你的commit回到了first commit 如果這時候git checkout hi2.txt 就會回朔到第一次commit時,hi2.txt的狀態
  39. 39. Restore  如果後悔reset了怎麼辦?  沒關係,東西其實都還在,在reset回去就好了  查看所有參照的日誌 git reflog 在進行一次reset就好了
  40. 40. Restore  這些長長的SHA碼,看了就覺得煩?  Git用了一些代號來表示前n次的commit  HEAD : 最近一次的commit  HEAD~1 : 前兩次的commit  HEAD~n : 前n+1次的commit git reset “HEAD~n”
  41. 41. Restore  只想讓某個檔案回到之前的狀態?  那麼這時候這個檔案進行checkout就會回到這次commit完成的狀態  reset不會改變你現在存在的檔案的狀態,改變的是前一次commit指向的位 置 checkout才能把你現在的檔案回復到之前的狀態  ???  沒關係下一頁有例子 git reset “HEAD~n” “file name”
  42. 42. Reset V.S Checkout hi2.txt在fourth commit的內容 hi2.txt在second commit的內容
  43. 43. Reset V.S Checkout 1. 在hi2.txt又加入一個數字
  44. 44. Reset V.S Checkout 1. 在hi2.txt又加入一個數字 2. reset到兩次以前 (second commit)
  45. 45. Reset V.S Checkout 1. 在hi2.txt又加入一個數字 2. reset到兩次以前 (second commit) 3. hi2.txt的內容還是沒變
  46. 46. Reset V.S Checkout 1. 在hi2.txt又加入一個數字 2. reset到兩次以前 (second commit) 3. hi2.txt的內容還是沒變 4. checkout
  47. 47. Reset V.S Checkout 1. 在hi2.txt又加入一個數字 2. reset到兩次以前 (second commit) 3. hi2.txt的內容還是沒變 4. checkout 5. 回復到second commit的內容了
  48. 48. Ignore file  有時候,有些檔案不想被加入git追蹤怎麼辦?  那就忽略它吧!!!  讓一些密碼或機密資料不要被追蹤和上傳  .gitignore內的檔案將不被git追蹤,如果在資料夾內就要把資料夾也打上去 e.g. 在aFolder下的b : echo aFolder/b > .gitignore  注意.gitignore不用也不能加./  注意這方法只適用在還沒加入追蹤的檔案 echo "filename" > .gitignore
  49. 49. Ignore file  如果想ignore已經加入的file怎麼辦?  那就不要追蹤它了!!!!!  先把它從版本資料庫移除  接著在做上一頁的步驟,就可以ignore了 git rm --cache “file name”
  50. 50. Rename(move) and delete files  刪除已經被加入git追蹤的檔案  重新命名和移動位置  對於Linux而言,這兩件事基本上是相同的 git mv “original filename” “new filename” git rm "filename"
  51. 51. Branch  Git非常重要的功能  可以想像成複製很多份同樣的code各自做不同的修改  通常是測試或者寫新功能的時候會用到  就是拿來解支線任務的功能啦!!!  切出不同的支線,每一個支線的存檔都能解不同的支線任務
  52. 52. Branch  開一個新的分支(名稱自訂)  切換到另一個分支 git branch “branch name" git checkout “branch name"
  53. 53. Merge  將另一個branch合併到現在的branch  通常做完branch的功能後,會切回master才merge  之後就能把合併完的branch刪掉  如果想要強制刪掉還沒merger的branch git merge “branch name” git branch –d “branch name” git branch –D “branch name”
  54. 54. Git Hub  What is Git Hub  一個可以將原始碼開放到網路 上的網站  很多強大的開放專案都來自這  p.s.私有專案是要付費的
  55. 55. Create a repo in Git Hub  建立帳號後,登入會看到這個畫面
  56. 56. Create a repo in Git Hub  為你的repo選個好名子,就可以Create repository了!!!
  57. 57. Create a repo in Git Hub
  58. 58. Push your repo  Push -> 簡單來說就是把你的檔案上傳到git hub  如果你還沒有一個git 專案,你可以照著他打 記得要把origin後面的網址改成你的repo的網址喔~ touch README.md git init git add README.md git commit -m "first commit" git remote add origin https://github.com/Lee-W/tryGit.git git push -u origin master
  59. 59. Push your repo  比較重要的是這兩行  git remote是將遠端設定為你的repo,只需要設定一次  git push –u origin master就是把master分支傳到git hub上 當然也可以傳其他的branch git remote add origin “Your repo” git push -u origin master
  60. 60. What should be in a repo  你的程式碼  readme  右下角的readme  要用markdown的語法寫 Git Hub還有自己的一套markdown Git hub Favored Markdown  通常會命名為readme.md 其實還有一些檔名git hub可以讀到 想知道就自己google吧!!!
  61. 61. Download a repo  這裡就要分成兩個支線了  1.如果你的電腦還沒有這個repo -> Clone a repo  2.如果你的電腦已經有這個repo了 -> Pull a repo
  62. 62. Clone a repo  如果你想要複製別人(或自己)的repo可以使用 git clone “repo url”
  63. 63. Pull a repo  如果你的電腦上已經有這個repo了  而且remote也是設定在這個repo上  這樣就可以把最新的版本抓下來 git pull
  64. 64. Pull a branch in a remote repo  透過這兩個指令,就可以把repo上特定的repo抓下來 git fetch origin git pull origin “branch_name”
  65. 65. Other Remote Operation  顯示現在remote的點在哪  刪除remote的點  加入remote的點 git remote -v git remote rm origin git remote add origin “URL”
  66. 66. Other resource  這裡附上一些很棒的的git教學和資源  1. 寫給大家的 Git 教學  2. Git教學  3. 版本控制系統 Git 精要使用讓 Git 1.8 (iHower)  4. 30 天精通 Git 版本控管  5. Pro GIT (中譯)  6. Try Git (互動)  7. Learn Git Branching (互動)

×