Git學習筆記——記錄我的第一篇學習部落格
阿新 • • 發佈:2018-11-10
Git是目前世界上最先進的分散式版本控制系統。
建立版本庫
mkdir <dir> //建立一個空目錄<dir>
cd <dir> //跳轉至目錄<dir>
pwd //顯示當前目錄
git init //在當前目錄初始化一個Git倉庫
建立一個Author,讓Git知道是誰在操作這個Git倉庫,需要用到Name、Email
git config --global user.email "Your [email protected]"
git config --global user.name "Your name"
提交檔案至Git
git add <file> //將檔案file新增到當前的Git倉庫
git commit -m <"message"> //將git add新增的檔案提交到Git倉庫,<"message">為本次提交的說明,每次提交都會生成一個對應的commit_id
git status //檢視當前狀態
修改與刪除
修改版本
git log //按照由近到遠的順序顯示最近提交的日誌,會顯示出每一次提交的commit_id git reflog //記錄每次的命令
Git中有一個指向當前版本的HEAD指標,只需要改變這個指標指向的commit_id就可以更改版本:
git reset -- hard commit_id //使HEAD指標指向commit_id版本
關於工作區與版本庫
工作區:專案檔案儲存的目錄;
版本庫:在工作區中有一個隱藏的資料夾.git,就是Git的版本庫;
版本庫中,有暫存區、主分支master、自己建立的其他子分支、以及指標HEAD;
git add 實質上是將工作區的檔案修改新增到暫存區;
git commit 實質上是將暫存區中的內容提交到當前分支上;
撤銷修改
git checkout -- <file> //直接丟棄工作區的修改 git reset DEAD <file> //撤銷暫存區的修改 git reset -- hard commit_id //撤銷commit_id的提交 git checkout -- <file> //實際上是用版本庫中的檔案替換工作區的版本,可以用於還原修改與刪除
刪除檔案
rm <file> //刪除工作區檔案
git rm <file> //刪除工作區與版本庫中的檔案
Git分支管理
初始化Git倉庫時會建立一個唯一的主分支master,master指向最新的提交,HEAD指標指向master,表明當前的提交點;
每一次提交,master向前移動一步,指向最新的提交;
HEAD指標指向新的master,完成版本更新;
當建立一個新的分支dev時,Git建立了一個新的指標,此時dev指向與master相同的提交;
將HEAD指標指向dev,使得新的分支dev成為當前使用的分支,後面所有的提交都會提交至dev分支;
git commit提交一次後,dev分支向前移動一步,HEAD指標指向dev分支上最新的提交,但master不變;
當dev分支上的工作內容完成,需要將dev分支合併至master分支,只需使master指向dev的最新一次的的提交即可。
相關指令
git branch <dev> //建立dev分支
git checkout <dev> //切換至dev分支
git checkout -b <dev> //建立dev分支,並切換至dev分支
git branch //檢視所有分支,當前分支前有一個*號
合併分支步驟
- 切換至master分支,使master分支成為當前分支 git checkout master
- 將指定分支dev合併至當前分支 git merge
- 刪除子分支dev git branch -d
git merge <dev> //將dev分支合併至當前分子
git branch -d <dev> //刪除dev分支
git branch -D <dev> //刪除一個沒有合併過的分支,當這個分支的所有工作內容都不想要時,可以用次命令
git merge --no-ff -m "message" <dev> //將dev分支合併至當前分支,並保留合併分支的所有資訊
臨時工作儲存
git stash //儲存當前的工作現場
git stash list //顯示已經儲存的所有工作現場
git stash apply [email protected]{0} //恢復指定的stash
git stash drop //刪除stash
git stash pop //恢復stash並刪除
標籤管理
git tag <name> //建立一個名為name的標籤
git tag //檢視所有標籤
git tag -a <tagname> -m "message" //建立一個名為tagname的標籤,標籤的資訊為message
git show <tagname> //檢視標籤tagname的資訊
git push origin <tagname> //推送一個本地標籤;
git push origin --tags //推送全部未推送過的本地標籤;
git tag -d <tagname> //刪除一個本地標籤;
git push origin :refs/tags/<tagname> //刪除一個遠端標籤。
遠端操作
git clone <https://github.com/google/glog.git> //將https://github.com/google/glog.git上的專案下載至本地