初始Git常用相關(guān)命令
下載Git
國內(nèi)鏡像
“Git”->“Git Bash”,蹦出一個類似命令行窗口的東西,就說明Git安裝成功!
安裝完成后,還需要最后一步設(shè)置,在命令行輸入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
-
創(chuàng)建一個版本庫非常簡單,首先,選擇一個合適的地方,創(chuàng)建一個空目錄
$ mkdir learngit
$ cd learngit
$ pwd//pwd命令用于顯示當(dāng)前目錄 git init //把這個目錄變成Git可以管理的倉庫(當(dāng)前目錄下多了一個.git的目錄,默認是隱藏)
假設(shè)我們現(xiàn)在有一個readme.txt(一定要放在git倉庫目錄下learngit)文件并有相應(yīng)的內(nèi)容
- git add 用命令 告訴Git,把文件添加到倉庫 eg:git add readme.txt
- git commit用命令告訴Git,把文件提交到倉庫:eg:git commit -m "wrote a readme file"(-m后面輸入的是本次提交的說明,可以輸入任意內(nèi)容,當(dāng)然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動記錄。)
- git status命令看看結(jié)果
- git diff這個命令看看修改的結(jié)果 eg:git diff readme.txt
- git log命令查看修改的歷史紀錄,如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上--pretty=oneline 參數(shù)。eg:git log --pretty=oneline,在這里你看到的一大串類似3628164...882e1e0的是commit id(版本號)
- git reset命令回退版本,上一個版本就是HEAD,上上一個版本就是HEAD,當(dāng)然往上100個版本寫100個。eg:git reset --hard HEAD^
- $ git reset --hard 3628164指定回到未來的某個版本3628164這個是不全的commit ID。會自己幫我們找
- git reflog用來記錄你的每一次命令
- git checkout -- file可以丟棄工作區(qū)的修改(工作區(qū)指還未add前,add之后,commit之前叫暫存區(qū))。eg:git checkout -- readme.txt
. 一種是readme.txt自修改后還沒有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫一模一樣的狀態(tài);
一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。
- 撤銷修改git reset HEAD file可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū):eg:git reset HEAD readme.txt
- 刪除文件 rm test.txt
這個時候,Git知道你刪除了文件,因此,工作區(qū)和版本庫就不一致了,git status命令會立刻告訴你哪些文件被刪除了:(git checkout其實是用版本庫里的版本替換工作區(qū)的版本,無論工作區(qū)是修改還是刪除,都可以“一鍵還原”)
- 現(xiàn)在你有兩個選擇,一是確實要從版本庫中刪除該文件,那就用命令git rm刪掉,并且git commit.eg:git rm test.txt 然后 git commit -m "remove test.txt"文件就從版本庫中被刪除了
- 另一種情況是刪錯了,因為版本庫里還有呢,所以可以很輕松地把誤刪的文件恢復(fù)到最新版本git checkout -- test.txt
- 創(chuàng)建SSH
Keyssh-keygen -t rsa -C "youremail@example.com"然后一路回車,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰, - 在GitHub上新建這個learngit倉庫。
git remote add origin git@github.com:HappyXiaoTian/learngit.git添加后,遠程庫的名字就是origin -
git push命令,把本地庫的內(nèi)容推送到遠程,實際上是把當(dāng)前分支master推送到遠程.eg:git push -u origin master -
git push origin master只要本地作了提交,就可以通過以上命令 -
從遠程庫克隆登陸GitHub,創(chuàng)建一個新的倉庫,名字叫g(shù)itskills。
git clone克隆一個本地庫eg:git clone git@github.com:HappyXiaoTian/gitskills.git
分支
-
git checkout -b dev我們創(chuàng)建dev分支,然后切換到dev分支。相當(dāng)于如下兩行命令:$ git branch dev$ git checkout dev
-
git branch命令查看當(dāng)前分支 -
git merge命令用于合并指定分支到當(dāng)前分支eg:git merge dev(假設(shè)當(dāng)前分支是master,就是將dev分支合并到master分支) -
git branch -d dev刪除dev分支 -
git merge --no-ff -m "merge with no-ff" dev準備合并dev分支,請注意--no-ff參數(shù),表示禁用Fast forward -
git stash把當(dāng)前工作現(xiàn)場“儲藏”起來,等以后恢復(fù)現(xiàn)場后繼續(xù)工作 -
git stash list命令看看剛才的工作現(xiàn)場存到哪去了 - Git把stash內(nèi)容存在某個地方了,但是需要恢復(fù)一下,有兩個辦法:
一是用git stash apply恢復(fù),但是恢復(fù)后,stash內(nèi)容并不刪除,你需要用git stash drop來刪除;
另一種方式是用git stash pop,恢復(fù)的同時把stash內(nèi)容也刪了:
- g
it branch -d feature-vulcanfeature-vulcan分支還是必須就地銷毀git branch -D feature-vulcan強行刪除 -
git push origin master推送master分支
標簽
-
git tag <name>就可以打一個新標簽eg:git tag v1.0 -
git tag查看所有標簽 -
git log --pretty=oneline --abbrev-commit找到歷史提交的commit id -
git tag v0.9 6224937對指定commit id是6224937打上標簽 -
git tag -a v0.1 -m "version 0.1 released" 3628164創(chuàng)建帶有說明的標簽,用-a指定標簽名,-m指定說明文字 -
git show <tagname>可以看到說明文字eg:git show v0.1 -
git tag -s v0.2 -m "signed version 0.2 released" fec145a簽名采用PGP簽名,因此,必須首先安裝gpg(GnuPG),如果沒有找到gpg,或者沒有g(shù)pg密鑰對,就會報錯 -
git tag -d v0.1標簽打錯了,刪除 -
git push origin <tagname>推送某個標簽到遠程eg:git push origin v1.0。git push origin --tags一次性推送全部尚未推送到遠程的本地標簽 -
git push origin :refs/tags/<tagname>可以刪除一個遠程標簽(先刪除本地的:git tag -d v0.9) eg:git push origin :refs/tags/v0.9