Git又稱作 vesion control system
是一個版本控制系統,當我們在做一個project、files的時候,可以由多人,不同地點,不同時間去編輯同一個file。
而他也可以有不同的Branch
(分支),也就是有不同的開發線,而主Branch
又稱作master branch
,比如每個人在同一個file去做複製貼上出一個新的file,利用這個新的file去做edit,此動作可避免影響到初始file,完成後再利用merge
去做合併,讓所有人都可以去修改同一個file。
且我們可以查詢到所有人修改的紀錄
(包括自己),這個修改是誰做的?為什麼這個人這樣做?什麼時候做的?
工作目錄(Working Directory
)」、「暫存區(Staging Area
)」以及「儲存庫(Repository
)。
Working Directory:就是我們在local正在操作的東西,在這個區塊的東西,尚未保存,故較容易修改以及刪除。
Staging Area:也是在local,且是我們想保存下來的東西,並準備要傳送至Repositroy儲存庫。
Repository:就是每次提交(commit)版本放置的區域。
而我們在Working Directory需透過git add
指令才能將file從工作目錄移至暫存區(or call index)。
而在Staging Area需透過git commit
指令把暫存區的內容移至儲存庫。
大致上是這麼一個流程
如下圖:
而這裡有幾個Git常用的command:
pwd:可顯示當前目錄路徑
cd:到指定路徑,如cd D:\
cd .. :可回到上一層目錄
code .:到指定路徑下的資料夾並快速開啟vs code。
touch:能夠新建檔案。
mkdir:用來新建資料夾。
rm:用來刪除檔案或資料夾。
echo:可將字串輸出至指定文件 ex:echo "test test" > test.txt
cat:可查找指定資料的內容 ex:cat test.txt
vim:可開啟指定路徑的檔案,開啟後,按下i進行編輯,要退出時,按下ESC並加上:wq即可
git config --global(user.name , user.email):在每次使用git進行版本管理時,送出修改的紀錄,告訴git我是誰,如何聯繫我,也讓別人在操作時,知道這是誰修改的。
而輸入完成後,在C槽=>USER下就可發現已新增一個名為.gitconfig的file,利用vscode打開,
即可顯示我們所輸入的資料。
git config -l:可查看當前配置如user.name,email等。
git init (資料夾名稱):初始化代碼倉庫。一般情況不會去更動.git裡面的文件
。
ls -la:可在初始化代碼倉庫下,看到ls看不到的資料,此處-開頭的為file其餘為folder。
find ./ -[i]name jojo.txt:find可尋找特定檔案,例如找尋檔名為 jojo.txt 的檔案。i 表示不分大小寫。
git add:可將指定要commit的文件儲存到git中的Index資料夾,也就是我們staging area中
git add * 可全部都儲存,git add test.txt test2.txt 加上空格可一次儲存多個。git add *:不會添加.開頭的檔案 ex: .gitignore,所以要直接 git add .gitignore
.git/index(此非command而為路徑):通過git add保存當前對文件或資料夾的改變,並儲存到index,一次只會儲存一個改變,而去commit,他就只會送出這個改變,也就是我們的index。
而透過find查詢.git下的file多了一個為index的folder,就是用來儲存我們的修改,
git status:查詢當前檔案狀態。
透過git status發現,如果有git add進去修改的資料,會顯示 new file : test2.txt,如果只有創建或改變但還沒有git add進去會顯示 modified : test1.txt 代表不會送出修改後的資料。
查詢出修改後但還沒git add進去還在working directory的文件(下圖)
已經git add進去準備commit的file(下圖)。
git log:可以查詢commit的紀錄。
git log --stat:詳情顯示commit 紀錄。
git log --after/before = "2020-06-30": 可查詢指定日期之前或之後的紀錄。
git commit:可送出我們所改變的資料,而在後面加上-m,git commit -m "add line 3" 可附加訊息,來說明這次送出的東西是什麼,使用 git log去查詢 commit history,有HEAD的紀錄為最新的紀錄。