【筆記】Git 入門筆記——使用 GitHub


Posted by Jianna on 2021-09-17

Git 入門筆記

Git 可以幫助我們更有效的進行版本控制,便於多人協作、管理多個版本。

我一開始傻傻的以為它的運作模式是幫助我們儲存每一次所變更的檔案,使用時還一直很擔心我如果改了什麼內容不就會被覆蓋掉嗎?但實際上它所儲存的是我們每次所進行的變動(當你真正使用後便可以從過程中所顯示的 ++-- 了解這一切XD),如此一來既可有效進行版本控管,又不會佔太大的空間,究竟要多天才才能創造出這種方法呢?(沒錯,過去我就是手動使用了多個資料夾來管理各種版本,弄到最後直接亂掉...)

如何安裝

Windows

Git官網 下載並安裝,完成後使用 Git Bash。

MacOS

打開 terminal,輸入 git --version,MacOS 10.9 以上會自動引導安裝,若無則可參考 官網說明 進行操作。

Git 常用指令

指令 功能 說明
git init 初始化 在資料夾內使用,會產生檔名為 .git 之隱藏檔案,會將需要被 git 所控制的檔名寫入檔案中
git status 狀態查詢 查看目前狀態
commit 前:
untracked 尚未加入版本控制
staged 已加入版本控制
git add 檔名 加入版本控制
git add .(或資料夾名稱) 加入版本控制 資料夾下所有檔案都加入版本控制
git rm --cached 檔名 取消加入版本控制
git commit 新建一個版本 送出後會進入 vim 編輯器
若 commit message 內容較長可以寫在裡面
內容較短則使用
git commit -m "message here
(使用 -m 前 無論新舊檔案都要記得 add)
git commit -am "message" 快速新建版本 效果等同 git add . + git commit -m
-am 只對先前 add 過的檔案有效,新的檔案必須手動 add 後才能 -am
git log 歷史紀錄
git log --oneline 單行歷史紀錄
git checkout 版本代碼 切換到某個版本
git checkout master 切換到 master 這個 branch 的最新狀態

基本操作流程統整

初始化

  • 對要控制的資料夾下 git init
    git add 將檔案加入版本控制,用 git status 檢查
  • 可以把資料夾中不需要進行版本控制的檔案寫入 .gitignore 檔(記得要把這個檔案加入版本控制資料夾裡面)
  • 通常會將使用者相關檔案、作業系統產生檔案等與專案本身較無關的檔案加入
    如果不自己寫入 .gitignore,就要在每次 commit 時手動忽略
    ### commit
  • 通常會在完成一個小進度的時候才進行 commit
  • 如果修改的檔案已經 add 過,在後續 commit 時就可以使用 git commit -am "message"
  • commit 後可用 git diff 指令觀看這一次改了什麼地方

Branch 分支

為什麼需要 branch?

在發展新功能與進行 bug fixing 時,可以分頭進行(平行),做完了確定後再合併。

指令 功能 說明
git branch -v 看現在有哪些 branch
git branch branch name 新建 branch
git branch -d branch name 刪除既有 branch
git checkout -b branch name 新增 branch 之後直接切換過去
git merge branch name 將 branch 併回 master 合併後就可以把 branch 刪掉
merge 時若遇到衝突,手動解決衝突後再 commit

Github

把 code 放上 Github

新增一個 repo 之後會跑出教學說明。

已經有 repo 的做法

git remote add origin https://github位址
git push (-u) origin master

push 最新狀態

git push origin master / branch 名稱

pull 已 push 之檔案

git pull origin master

把別人的 repo 抓下來

git clone 網址 //抓到本地

fork 則是直接複製一份 repo 到自己的 github 上。

在 github 上要求 merge

點擊 Compare & pull requests

特殊狀況

更改送出的 commit message

git commit --amend

刪除 commit

git reset HEAD^

HEAD 表示最新的 commit,^ 則是代表前一個

git reset HEAD^ --hard //全都不要了,就像根本沒發生過
git reset HEAD^ --soft(預設) //commit 不要了,但修改過的檔案狀態還是在

還沒 commit,將檔案回覆到之前的狀態

git checkout -- 檔案名稱
git checkout --. //所有檔案

更改 branch 的名字

git branch -m 新名稱

把遠端的 branch 抓下來

git checkout branch 名稱

Hook

發生某事的時候讓程式自動通知我。

Git hook

.git 資料夾 -> hooks 資料夾,裡面的小程式會有說明文字
最常使用到「在 commit 之前檢查」的功能
exit 1:不送出 commit
exit 0:送出 commit

參考資料

Lidemy【GIT101】Git 超新手入門


#Git #Github







Related Posts

如何用 TensorFlow object detection API 的 Single Shot MultiBox Detector 來做 hand detection

如何用 TensorFlow object detection API 的 Single Shot MultiBox Detector 來做 hand detection

Day 6 - While Loop & Karel

Day 6 - While Loop & Karel

[筆記] MySQL 環境安裝(Ubuntu 18.04)與 phpMyAdmin 架設

[筆記] MySQL 環境安裝(Ubuntu 18.04)與 phpMyAdmin 架設


Comments