git的一些基本用法
前言
本文主要根據這一段時間對git的使用情況做一下記錄,以後當忘記時還可以進行查閲。既然是記錄就難免給人感覺像流水賬。作為入門級的,感覺廖雪峯的git教程寫的很好,掃盲了很多知識點。
git的基本操作
創建版本庫----git init
當我們想把一個文件夾變成git可以管理的倉庫時,只需要一條git init即可,執行之後會在當前目錄下面多一個.git的目錄,這個.git目錄就是來跟蹤和管理版本庫的。
#基本命令
git init
添加文件到版本庫—git add
此命令將要提交的文件信息添加到索引庫中(將修改添加到暫存區),它通常一次添加一個文件,也可以一次添加多個文件或者添加指定的目錄,包括子目錄。
#一次添加一個或多個文件到暫存區
git add [file1] [file2] ...
#添加指定的目錄,包括子目錄
git add [dir]
文件的提交----git commit
git commit命令將暫存區內容添加到本地倉庫中。
#提交暫存區到本地倉庫,添加一條備註信息,如果沒有-m選項,Git 會嘗試為你打開一個編輯器以填寫提交信息
git commit -m [message]
#提交暫存區的指定文件到倉庫
git commit [file1] [file2] ... -m [message]
#-a 參數設置修改文件後不需要執行 git add 命令,直接來提交
#注意這裏的文件要是之前提交過的,只是修改了內容。如果是一個新創建的文件,這條指令沒用
git commit -am [message]
撤銷命令—git restore
git restore命令是撤銷的意思,也就是把文件從暫存區撤銷,回到未被追蹤的狀態。
#撤銷工作區的改變,使文件恢復到改變前的狀態
git restore <file1> <file2>...
#從暫存區撤銷,回到未被跟蹤的狀態。--staged 參數就是表示僅僅恢復暫存區的
git restore --staged <file>...
#當前目錄所有暫存區文件恢復狀態
git restore --staged .
查詢倉庫當前狀態----git status
git status命令用於顯示工作目錄和暫存區的狀態,使用 git status 命令能看到那些修改被暫存到了,哪些沒有。當執行git status的時候,返回結果大致可分為3個部分:
#基本的命令格式:
git status
#簡短的輸出結果
git status -s
查詢提交信息—git log
git log命令用於顯示提交日誌信息。
#基本命令
git log
#簡單信息
git log --pretty=oneline
#查看電線圖,多用於查看分支合併,圖形化
git log --graph
查詢真正的所有提交—git reflog
git log有一個很大的缺點是,一旦發生git reset,回退版本之後的提交信息將不在顯示,如果我們想再回退回去,就會差不到相關記錄。
#基本操作
git reflog
版本回退—git reset
git reset命令用於將當前HEAD復位到指定狀態。一般用於撤消之前的一些操作(如:git add,git commit等)。
git reset的三種模式可以用下圖很好的解釋:
#--hard 參數撤銷工作區中所有未提交的修改內容,將暫存區與工作區都回到上一次版本,並刪除之前的所有信息提交
#--soft (--mixed)都不會改變工作區的內容
#根據提交的id進行回退
git reset --hard commit_id
#回退到上一版本
git reset --hard HEAD^
#回退到前100個版本
git reset --hard HEAD~100
工作區和暫存區
工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。
Git的版本庫裏存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。
刪除文件—git rm
如果要將一個文件從本地倉庫中進行刪除,可以用git rm進行刪除,並用git commit進行提交。例如:
#如果想把文件從暫存區域移除,但仍然希望保留在當前工作目錄中
git rm --cached <file>
#將文件從暫存區和工作區中刪除
git rm <file>
git的分支管理
git創建一個分支—git checkout 或git switch或git branch
#git checkout創建一個分支, -b參數表示創建並切換
git checkout -b <branchname>
#git branch創建分支
git branch <branchname>
#git switch創建分支,-c參數表示創建並切換
git switch -c <branchname>
切換分支—git checkout 或git switch
#git checkout切換分支
git checkout <branchname>
#git switch切換分支
git switch <branchname>
查看分支—git branch
#查看本機分支
git branch
#查看本機和遠程分支
git branch -a
合併某分支到當前分支—git merge
#合併某分支到當前分支
git merge <branchname>
通常,合併分支時,如果可能,Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支信息。如果要強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支信息。
#禁用Fast forward模式合併分支
git merge --no-ff -m <message> <branchname>
刪除分支—git branch
#刪除分支
git branch -d <branchname>