Chapter 3 Github Desktop-Individual

基本名詞介紹

  • Untracked:指尚未加入版本控制的檔案或資料夾
  • staged:有加入版本控制的檔案或資料夾

  • local:本地端,指自己的電腦
  • remote:遠端(雲端),指GitHub

  • fetch:取,接近get的意思,是聯繫本地端與雲端的橋樑。

本地端到雲端

git init

小瑜把需要的軟體資源都裝好了,現在開始他計畫每次寫報告都要把檔案透過Git做版本控制,他要怎麼做呢?

  • 把尚未有版本控制的檔案或資料夾加進來

    • 小瑜新增了一個GitDemo2的資料夾

截圖

新增版本控制資料夾


選擇Add repository 則是把原本就已經有版本控制的檔案或資料夾,整合到Github Desktop的GUI介面,較方便操作。
  • 小瑜在裡面新增了一個檔案Demo.txt

截圖

在版本控制資料夾內新增檔案

git commit

小瑜在Demo.txt內新增了一些內容,差不多寫好一個段落了…

截圖

檔案新增內容

Github Desktop偵測到檔案變化

  • 新增檔案後,每當撰寫文字(或程式開發)到一個段落時候,就需要進行commit。每一次commit,Git都會計算一個專屬的、絕對不重複的版本號。有點類似郵戳認證的感覺。

  • 切勿每天工作做完才commit,建議是完成一個小部分(也許畫完一個圖、修正完一個bug、建立好一個模型、寫好一個新的軟體功能)就commit一次。

  • 極端一點,有些人會每半小時到一小時commit一次。

git push

同時小瑜為了建立良好的習慣,每一次commit都會同步到GitHub

截圖

第一次推上雲端是publish

簡單設定好雲端的repo名稱(建議兩端相同)

往後同步都叫做fetch

  • 完成commit後,代表一個新進度已經完成囉!接下來可以同步到GitHub給其他團隊成員(或其他開源社群使用者)參考。消極一點,至少幫自己做個雲端備份。

  • 第一次雲端同步稱作Pulish,往後就是fetch

雲端到本地端

git pull

有時候求個方便,小瑜想知道是否可以在GitHub編輯檔案,然後同步到自己電腦?

截圖

Github上面也已經有了一模一樣的檔案

針對Demo.txt檔案進行更改(右邊的小鉛筆)

更改完成

看到pull,一個往下的箭頭了吧~~

成功同步到本地端

  • 將自己在雲端GitHub新增的東西,同步到本地端

  • GitHub Desktop稍微省略了pushpull的差異,原則上只要用push: 推上雲端pull: 從雲端把東西拉下來去理解即可。

git clone (fork, then clone)

小瑜在GitHub發現別人整理的資料相當不錯,想要複製一份給自己再慢慢地參考,他要怎麼做呢?…..

截圖

假設小瑜需要的就是hadley/r4ds這個repo

點選Fork,就能複製屬於自己的一份(Fork數量變化是?

進一步地複製網址,準備拉到本地端

點選Clone Repository

貼上每個repo專屬的網址

這樣本地端是否也就有一份了呢?

  • Fork,把有興趣的專案(repo),複製出屬於自己的一份

  • 把整個專案從雲端拉下來到本地端的動作就叫做clone

    • clone是針對整個repo;pull則是針對commit


  • 切記要先Fork,畢竟若直接clone別人的repo的網址,後續修改檔案是無法同步回去雲端的,畢竟自己怎麼可能會有別人帳號本身的同步儲存權呢?

其他

revert

寫著寫著小瑜覺得某一段落的文章內容實在是不需要了,除了進到檔案選取 + delete,版本控制怎麼樣能夠幫到他的忙?

截圖

在History區,對你要revert的commit點選右鍵

若revert剛才從Github pull下來的commit

綠色表示新增,紅色表示刪去

這時候新增的那行就不見了!酷吧!

  • 每一次的commit都像是個郵戳章,紀錄著檔案隨著開發者編輯的變化。自然地若你不要某一個部分,只要把紀錄該部分所對應的commit給revert掉,自然也就是把郵戳章給抹去了。

    • 所以若是commit習慣越好,就能越方便revert掉小範圍的程式,方便管理,會比若要revert就要去掉幾百行程式來得好很多!

    • 把commit推翻掉的方式不只有revert,若有需要可以再稍微查找一下,選一個順手的方式。


  • 這時候revert完的檔案狀態是只有本地端呢?還是連雲端的GitHub都有revert了呢?