1. 程式人生 > >Git學習筆記——記錄我的第一篇學習部落格

Git學習筆記——記錄我的第一篇學習部落格

推薦廖雪峰老師的Git學習教程

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上的專案下載至本地