版本控制是一個能夠記錄一個或一組檔案在某一段時間的變更,使得使用者以後能取回特定版本的系統。
為了以後能取回特定的版本,以及多人協作時大家的版本管理。
上傳雲端?用另一份文件記錄別的文件的變動?
所有版本控制的工作在一個伺服器進行,由中央權威管理存取權限「鎖上」檔案庫中的檔案,一次只讓一個開發者工作。
開發者直接在各自的本地檔案庫工作,並容許多個開發者同時更動同一檔案,而各個檔案庫有另一個合併各個改變的功能。這個方式讓開發者能不靠網路也能繼續工作,也讓開發者有充分的版本控制能力,而不需經中央權威許可。
當你所要記錄的版本變更是文字檔而不是 Binary 檔案的時候
ls [-la]
:列出當前目錄下的檔案 / 資料夾(加上 -la
會顯示更詳細的資訊)cd <path to directory>
:移動到Jㄍ <path to directory>
路徑的目錄mkdir <directory name>
:在當前目錄下創建名為 <directory name>
的資料夾working directory(工作區):
git add <file name>
將指定的變更暫存下來staging area(暫存區):
git commit -m "< commit message>"
將當前暫存區內所有變更打包成一個版本,紀錄進本地儲存庫local repo(本地儲存庫):
git push <remote> <branch>
將本地儲存庫推到遠端儲存庫remote repo(遠端儲存庫):
git config --global user.name "<GitHub Username>"
:設定全域使用者名稱 (同 GitHub 的就好)git config --global user.email "<GitHub email>"
:設定全域使用者信箱 (同 GitHub 的就好)git init
:在當前目錄下初始化出一個空的本地儲存庫git status
:查看當前工作區與暫存區狀態git log
:查看當前本地儲存庫的 commit 紀錄git reflog
:查看過去 HEAD 指向過去的 commit 清單git add <file name>
:將 <file name>
的變更放入暫存區git commit -m "<message>"
:將當前暫存區中的所有變更打包成一個版本,並附加版本敘述訊息,紀錄進本地儲存庫git branch <branch name>
:創建名為 <branch name>
的分支git branch -D <branch name>
:刪除名為 <branch name>
的分支git checkout <branch name>
:切換到名為 <branch name>
的分支git checkout <file name>
:放棄在工作區中名為 <file name>
檔案的所有變更git merge <target branch>
:將名為 <target branch>
的 分支合併到當前所在的分支git push <remote> <branch>
:將本地儲存庫的狀態推到遠端儲存庫git pull <remote> <branch>
:將遠端儲存庫的狀態拉到本地儲存庫git reset
:將暫存區變更退回工作區git reset [--mixed/--soft/--hard] <commit>
:挪動本地儲存庫 HEAD 指向的位置
mixed
:將指向位置相對未來紀錄的變更退回工作區soft
:將指向位置相對未來紀錄的變更退回暫存區hard
:將指向位置相對未來紀錄的變更消滅到連渣都不剩(不過其實還有救)git revert <commit>
:將指定的 commit 做反向操作並留下一筆紀錄git rebase <source branch>
:將當前所在的分支的根節點挪到名為 <source branch>
的分支葉節點上