Git是一個分佈式版本控制系統
常用命令
-
首次運行Git需配置姓名和郵箱
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"git config命令的--global參數表示該臺機器上所有的倉庫都會使用這個配置 -
創建倉庫
$ mkdir learnGit #創建learnGit目錄 $ cd learnGit #進入learnGit目錄 $ git init #將當前目錄初始化為Git倉庫 -
添加文件至版本庫
新增一個文件(需在Git倉庫目錄),例如readme.txt
$ git add readme.txt #把文件添加到Git的暫存區 $ git commit -m "add a readme file" #把文件提交到倉庫注意:
git add <file>命令可反復多次使用,添加多個文件。例如:$ git add file1.txt $ git add file2.txt file3.txt -
提交修改文件
與提交新文件的步驟相同,都是先
git add再git commit -m,修改文件的常用命令:$ git status #查看倉庫當前狀態 $ git diff readme.txt #查看readme.txt文件的修改內容 -
版本切換
$ git reset --hard commit_id #切換至版本號為commit_id的版本注:HEAD是當前版本,也就是最新提交的版本,
HEAD^表示上個版本,HEAD^^表示上上個版本,HEAD~100表示往上100個版本,例如$ git reset --hard HEAD^ -
撤銷修改
$ git checkout -- readme.txt #用於撤銷工作區的修改(將工作區的readme.txt文件回到最近一次git commit或git add时的状态。若修改後未添加到暫存區則回到最近git commit的狀態,若添加到了暫存區後又做了修改則回到添加到暫存區後的狀態) $ git reset HEAD readme.txt #用於撤銷暫存區的修改(先將暫存區的修改放回到工作區,再將暫存區的該文件刪掉) -
刪除文件
刪除工作區的文件,例如test.txt,然後執行如下命令
$ git rm test.txt #此命令用 $ git add test.txt 命令代替,效果也是一樣 $ git commit -m "remove test.txt"倘若误删了工作區的文件,則執行
$ git checkout -- test.txt即可恢復,因為版本庫裡有此文件,git checkout其实是用版本库里的版本替换工作区的版本; -
查看Git提交日誌
$ git log #查看當前版本及之前的版本的log $ git log --pretty=oneline #是git log命令結果的簡化顯示 $ git reflog #查看命令歷史 -
遠程倉庫
$ git remote -v #查看遠程倉庫的信息 $ git remote add origin https://gitee.com/用户个性地址/倉庫名.git #關聯遠程倉庫 #注意:origin是遠程倉庫名,可以換成其他名字。當從遠程倉庫克隆時,git為遠程倉庫默認起名origin $ git remote rm origin #取消與遠程庫的關聯 -
從遠程庫克隆
以下兩個命令都可以 $ git clone git@gitee.com:用户个性地址/倉庫名.git $ git clone https://gitee.com/用户个性地址/倉庫名.git -
推送和抓取
$ git push -u origin master #推送到遠程庫 & 建立本地分支與遠程分支的關聯 $ git push origin master #推送最新修改 $ git pull #抓取遠程的新提交 $ git checkout -b branch-name origin/branch-name #在本地創建和遠程分支對應的分支(本地和遠程分支的名稱最好一致) $ git branch --set-upstream branch-name origin/branch-name #建立本地分支和遠程分支的關聯(使用git branch --set-upstream-to=origin/branch-name branch-name也是一樣,當執行git pull提示no tracking information,則說明本地分支和遠程分支的鏈接關係沒有創建) -
分支
-
查看分支
- 查看本地倉庫分支
git branch
該命令会列出所有分支,当前分支前面会标一个*号 - 查看遠端倉庫分支
git branch --remote
- 查看本地倉庫分支
-
創建分支
git branch <name>
例如 git branch dev 創建dev分支 -
切換分支
git checkout <branch-name>或者git switch <branch-name>
例如 git switch master 切換到master分支 -
創建+切換分支
git checkout -b <branch-name>或者git switch -c <branch-name>
例如 git switch -c dev 創建並切換到新的dev分支 -
合併某分支到當前分支(Fast forward模式)
git merge <branch-name>
例如 git merge dev 合併dev分支到當前分支 -
合併某分支到當前分支(禁用Fast forward模式)
git merge --no-ff -m "merge with no-ff" <branch-name> -
刪除分支
git branch -d <name> -
查看分支合併圖
git log --graph
也可以git log --graph --pretty=oneline --abbrev-commit -
BUG分支
修復bug過程: 1. 確定在哪個分支上修復,在此分支上創建新的臨時分支 2. 合併分支(禁用Fast forward模式) 3. 刪除臨時分支- 隱藏當前工作現場
git stash - 回到工作現場
git stash pop
此命令等同於分別執行git stash apply和git stash drop - 查看隱藏的工作區內容
git stash list - 把提交複製到當前分支
git cherry-pick <commit_id>
- 隱藏當前工作現場
-
刪除未合併過的分支
git branch -D <name>
-
-
整理未push的分叉提交
$ git rebase #把本地未push的分叉提交整理成直線,使歷史提交看起來更整齊 -
標籤
-
打標籤
git tag <name>
默認標籤打在最新提交的commit上,命令git tag <tag-name> <commitId>是將標籤打在指定的commitId上 -
查看所有標籤
git tag -
查看標籤信息
git show <tag-name> -
創建帶說明的標籤
git tag -a <tag-name> -m "version 0.1 released" <commitId>
-a指定標籤名,-m指定說明文字 -
刪除本地標籤
git tag -d <tag-name> -
推送本地標籤到遠程
git push origin <tagname>
git push origin --tags一次性推送全部尚未推送到遠程的本地標籤 -
刪除遠程標籤,分兩步
git tag -d <tag-name>從本地刪除git push origin :refs/tags/<tag-name>從遠程刪除
-
-
獲取Git幫助
$ git help config #獲取config命令怎麼用
參考:Git入門教程--廖雪峰