git的操作


Posted by NYBOSLA on 2020-10-20

git

git的操作原理

一個人 v.s 多人修改時

一個人在做檔案存擋及版本控制的,是否會一直把同樣檔案,複製一份修改,然後檔名就會出現像下面一樣

  • banner.html
  • banner_v2.html

硬碟裡就充斥著許多些許更改的檔案,但由於是自我管理,所以自己會知道哪個檔案是最新的,哪個檔案修改了什麼。

然而在多人管理時,會出現時間、內容的差異,可能大家都是用同一份檔案在修改,就會出現檔案名稱一樣,但內容不一樣的衝突發生,那最後又要以哪份檔案當作合併的檔案呢?這樣的情況下不僅會覆蓋掉別人辛苦寫的code,也可能導致檔案雜亂不堪。

git的存在就是為了解決這樣的內容,git的資料夾結構如下:
-master 主要檔案
-branch 在git底下可以開很多分支檔案,稱作branch,每個branch中,git會將每個branch資料夾的檔名,轉成hashes亂碼存起來,因此每份檔名都不同。

無論你在branch修改了什麼,都不會動到master的主要檔案,git可以管理好所有的版本,存在著不同進度支線的檔案,等完成後再合併起來。

git的使用流程

git init
在桌面先開一個測試資料夾 new裡面新增html,css,js等相關檔案, 打開 Terminal、將當前目錄改到 new,輸入 git init,會發現多了一個 .git 的隱藏資料夾。

git status
可看現在git的狀態
這邊畫面會顯示,檔案被分成兩個區域,分別是 Stage (有版控) 、 Untracked (沒版控)。

git add .
全部加入版本控制:
把資料夾裡面所有的檔案加入git 的版本控制

單純選擇哪些檔案加入版本控制,如下:

  • 加入版控:
    git add 檔案名稱
  • 取消版控:
    git rm —cached 檔案

git commit -m “first commit”
commit 的時候一次完成:git commit -m “要在這個檔案寫下什麼note”
也可以輸入 git commit
會進入 vim 編輯你的版本訊息 commit message
小小叮嚀,進入vim後要離開可以按 :q

覺得太麻煩也可以使用add+commit一起的語法
git commit -am “message”

git remote add origin 加上github上面的網址

git push -u origin master

git的指令

  1. git init:初始化 git。
  2. git status:git 目前版本狀態查詢。
  3. git add:git add +檔案,將檔案加入版本控制。例:git add 123,將檔案名稱123加入版本控制。
  4. git add .:一次將目前所有檔案都加入版本控制。
  5. git rm —cached:git rm —cached +檔案,將檔案移除版本控制。
  6. git commit:新建版本(就像新建一個資料夾),輸入 git commit 後就會進入到編輯器vim,在裡面可以新增 commit message (版本敘述,就像是資料夾名稱一樣),一樣是:q!或是:wq跳回。
  7. git commit –m “版本敘述”:不進入vim,直接在 terminal 新增 commit message。例:git commit –m “ first virtion”。
  8. git commit –am “版本敘述”:將所有檔案加入版本控制並建立版本(git add + git commit –m”版本敘述”)的綜合功能。
  9. git log:查看版本歷史紀錄。每個版本上方會寫commit 後面接一串英數交雜,這個就是版本(編)號。
  10. git log —oneline:查看簡單的版本歷史紀錄,此時的版本號會是簡易的前七碼。
  11. git checkout:git checkout + 完整的版本號。將版本更改到版本號的那個版本。
  12. git checkout master:將版本更改到最新的版本。
  13. .gitignore:不想要被版本控制的檔案。先用touch 建立 .gitignore 檔,再將其他不想被版本控制的檔案加入 .gitignore 檔(透過 vim .gitignore,再輸入不想被版本控制的檔名,按 :wq離開),這樣即便之後一次用 git commit –am,.gitignore 檔也不被被版本控制。
  14. git diff:再更改後的檔案再次加入版本控制前,可用 git diff 看出版本更改的東西在哪。
  15. git branch –v:確認主幹及分支。
  16. git branch + 分支名稱:新增分支並命名。
  17. git branch –d +分支名稱:刪除分支。
  18. git checkout + 分支名稱:移動到該分支。
  19. git merge +分支名稱:git merge A,將 A 分支合併進目前所在的分支。
  20. git push + 遠端主機(git hub)名稱(通常叫做 origin) + 本地分支名稱:將本地已經 commit 的版本上傳更新到 git hub。若之後有在本地新增 branch,也是一樣用此語法。
  21. git pull +遠端主機(git hub)名稱(通常叫做 origin) + 遠端分支名稱:將遠端的分支下載下來(通常發生在多人協作時,需要將別人修改過上傳到 github 的分支再次下載下來使用)。
  22. git clone +網址:將遠端的 repository 下載下來。
  23. git commit --amend:更改已經 commit 的 commit message。會進入到編輯器裡,在裡面直接更改並儲存離開。
  24. git reset HEAD^:(已經 commit)回到 commit 前的那個狀態(還保留此次修改的版本,只是尚未 commit),通常發生在 commit 後但又發現有錯需要更正內容。
  25. git reset HEAD^ --hard:(已經 commit)回到上一個版本的狀態(此次 commit 的內容完全消失)。
  26. git reset +版本號:(已經 commit )回到該版本號的狀態(等同於放棄目前最新的狀態)。
  27. git checkout --:(尚未 commit)回到上一個版本的狀態(等同於放棄此次修改的東西)。
  28. git branch –m + 新的 branch 名稱:(必須在欲修改的那個 branch 上)修改 branch 名稱。
  29. git checkout + 遠端的 branch 名稱:將遠端的branch下載下來。
  30. git diff:查看檔案與上一個版本有什麼不同

#Git







Related Posts

Python Web Flask 實戰開發教學 - SQLAlchemy 與 ORM

Python Web Flask 實戰開發教學 - SQLAlchemy 與 ORM

物件導向、原型鍊、this 淺淺談

物件導向、原型鍊、this 淺淺談

資訊安全:XSS

資訊安全:XSS


Comments