iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
0
自我挑戰組

轉職道上的萌芽人生 − 自學程式開發ing系列 第 24

Day 24- 191010學習筆記 Git 入門篇

  • 分享至 

  • xImage
  •  

提醒:由於看到這系列鐵人訂閱人數漸漸變多,標記一下這些內容是在「非常萌新時期」所寫,更多技術內容請參考我的 Github,歡迎跟我一起討論 ^ ^


Git 可說是一個必備技能,剛好昨天有用到,就打鐵趁熱,接下來先就 Git 做個基礎學習。而今天的內容主要是在 猴子 git git 叫 上面學習 Git 入門。


Git 基本介紹

  • Git 是用來做版本控制的工具,他會依照時間順序紀錄下你對檔案的所有編輯歷史,因此可以方便的取得某次編輯前的檔案,以清楚的方式標記編輯檔案前後的差異,方便讓多人共同編輯。
  • 這些資訊及檔案本身,儲存在 Repository:
    • Local Repository:也就是在個人裝置上,每個人將會各自在此編輯檔案。
    • Remote Repository:可同步在專用的伺服器(GitHub)上,方便讓多人共享使用。
  • Working Tree >add> Index >commit> Repository
    • Working Tree:正在處理檔案的目錄,檔案的一切編輯在此進行,此時做的變動尚不會做紀錄。
    • Index:為一個暫時區域(想像成「購物清單」)。可在此暫存區先做整頓,確認好所有需要的檔案,以待放進 Repository。
    • Repository:所有列在 Index 的檔案,才可以存進 Repository,以修改檔案並作紀錄(會有所有修改的紀錄、每次紀錄時的檔案內容)。
  • 可看到,進行 commit 時,才會做一次紀錄(存擋)。
    • 因此盡量在每次 commit 時,只做一種類型的更改(如:錯誤修復&功能添加,將這兩種不同事情,分成不同次 commit )
    • 每次 commit 都會有其自己的編號,以代表該次 commit。
    • 而 commit 的註解建議以以下形式書寫:
      第1行:摘要
      第2行:(空行)
      第3行:理由
  • gitk:安裝 git 會同時安裝 gitk 。可以輸入指令來使用圖形化介面。

初始設定

  • git config --global user.name "(使用者名字)":設定使用者名字。
  • git config --global user.email "(電子信箱)":設定電子信箱。
  • git config --global color.ui auto:可以設定Git輸出的顏色。
  • git config --global alias.(暱稱) (指令名稱):可設定將 指令 賦予 暱稱,以後可直接以暱稱來使用該功能。
  • git config --list:查詢使用者資料。

建立Repository

  • 可以直接在 Local 建立:
    git init:在你想要建立為 Repository 的字料夾底下輸入指令 ,即可將此資料夾建立為 Git Repository。
  • 可以在 Remote 建立,再複製到 Local:
    git clone (Remote的url) (資料夾名稱):如同昨天的方法,先在 GitHub 建立 Repository ,再輸入指令,即可複製該 Git Repository 到 Local 並建立資料夾。

共享Repository

  • git remote add (暱稱) (Remote 的 url):可以幫 Remote Repository 取一個名稱,之後就可以直接使用該名稱來同步 Remote Repository。(通常會命名為 origin
  • 同步方式:
    • git push (repository) (分支名):將 local 同步到 remote。
    • git pull (repository) (分支名):將 remote 同步到 local。
  • 舉例:
// 將 https:xxx.. 取暱稱為 origin
git remote add origin https:xxx..
// 在該 Repository 可以開始以 origin 代表 https:xxx..
// 將 Local 同步到 origin 的 ‘master’分支
git push origin master
// 將 origin 的 ‘master’分支同步到 Local
git pull origin master

合併編輯紀錄

  • 當多人一起編輯檔案時,可能在你同步到 remote 之前,已經有其他人更新了 remote。這時就會遇到衝突,不可直接覆蓋。需先將其 pull 至 local,進行合併之後,再 push 到 remote。
  • 當你 pull 至 local 時,檔案彙顯示如下:
    https://ithelp.ithome.com.tw/upload/images/20191011/20120981REJFgevaPP.png
    • <<>>來框出有衝突的地方。
    • == 來分隔開,上面為你自己的內容,下面為同步進來的內容。
    • << 的上方有幾個自動的選項:1.保留你自己的內容 2.保留別人的內容 3.兩個都保留 4.查看兩者的檔案的樣貌(如下)
      https://ithelp.ithome.com.tw/upload/images/20191011/20120981FkLwtPvJT8.png
  • 比較複雜的形況可手動進行合併,合併完就可以再嘗試同步到 remote 了。(此版本可註解為「合併」)
  • 合併後再以 git log 查看版本歷史,則可以看到有分支出現。
  • git log --graph --oneline:可加入兩個參數
    • --graph:以圖表方式顯示分支歷史。
    • --oneline:簡化輸出訊息,只顯示一行訊息。

今天想說,以後在文末也紀錄一下當天看其他鐵人的小收穫或是需要加深印象的地方。

鐵人筆記:

const A = { value: 10 }
const B = (x) => {
  x.value = 456
  x = { value: 123 }
  x.value = 321
  console.log(`In: ${JSON.stringify(x)}`)
}
B(A)
console.log(`Out: ${JSON.stringify(A)}`)

結果:

In: {"value":321}
Out: {"value":456}
  • ASI
    新的一行以下列開頭,不會發生ASI(自動補 ;):
    • ( [ /
    • + - * %
    • , .

上一篇
Day 23- 191009學習筆記 Express - Deploying to production(下)
下一篇
Day 25- 191011學習筆記 Git - 分支 / remote
系列文
轉職道上的萌芽人生 − 自學程式開發ing30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言