git基本使用

2021-09-13 10:36:46 字數 4050 閱讀 5014

git在日常開發中是必不可少的工具,本文總結了日常開發常用的git命令

git是什麼?

git是目前世界上最先進的分布式版本控制系統(沒有之一)。

git有什麼特點?簡單來說就是:高階大氣上檔次!

1、git是分布式的,svn不是:這是git和其它非分布式的版本控制系統,例如svn,cvs等,最核心的區別。

2、git把內容按元資料方式儲存,而svn是按檔案:所有的資源控制系統都是把檔案的元資訊隱藏在乙個類似.svn,.cvs等的資料夾裡。

3、git分支和svn的分支不同:分支在svn中一點不特別,就是版本庫中的另外的乙個目錄。

4、git沒有乙個全域性的版本號,而svn有:目前為止這是跟svn相比git缺少的最大的乙個特徵。

5、git的內容完整性要優於svn:git的內容儲存使用的是sha-1雜湊演算法。這能確保**內容的完整性,確保在遇到磁碟故障和網路問題時降低對版本庫的破壞。

$ git config --global user.name "your name"

$ git config --global user.email "[email protected]"

git init

git add .

git commit -m

git status

git diff

初始化乙個git倉庫,使用git init命令。

第一步,使用命令git add .,新增全部 ,注意,可反覆多次使用,新增多個檔案;

第二步,使用命令git commit -m "提交的注釋",完成。

執行git status命令看看結果

執行git diff這個命令可檢視我們修改了什麼內容

前面講了我們把檔案往git版本庫里新增的時候,是分兩步執行的:

因為我們建立git版本庫時,git自動為我們建立了唯一乙個master分支,所以,現在,git commit就是往master分支上提交更改。

你可以簡單理解為,需要提交的檔案修改通通放到暫存區,然後,一次性提交暫存區的所有修改。

git log

git reset --hard commit_id

通過git log來檢視版本(加上--pretty=oneline引數檢視關鍵資訊)。

git中,用head表示當前版本,上乙個版本就是head^,上上乙個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100。

git checkout -- file

git checkout -- readme.txt

git reset head

把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:

總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。

git checkout -- file命令中的--很重要,沒有--,就變成了「切換到另乙個分支」的命令

如果你想要修改,已經git add到暫存區,但還沒有commit的內容。

我們可以使用git reset head 把暫存區的修改撤銷掉(unstage),重新放回工作區。

git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head時,表示最新的版本。

一般情況下,你通常直接在檔案管理器中把沒用的檔案刪了,或者用rm命令刪了

$ rm test.txt
這個時候,git知道你刪除了檔案,因此,工作區和版本庫就不一致了,git status命令會立刻告訴你哪些檔案被刪除了。

$ git status

on branch master

changes not staged for commit:

(use "git add/rm ..." to update what will be committed)

(use "git checkout -- ..." to discard changes in working directory)

deleted: test.txt

no changes added to commit (use "git add" and/or "git commit -a")

現在你有兩個選擇,

$ git rm test.txt

rm 'test.txt'

$ git commit -m "remove test.txt"

[master d46f35e] remove test.txt

1 file changed, 1 deletion(-)

delete mode 100644 test.txt

$ git checkout -- test.txt
git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。

本地倉庫關聯遠端倉庫

$ git remote add origin [email protected]:jack-cool/learngit.git
本地**推送遠端倉庫

$ git push -u origin master
把本地庫的內容推送到遠端,用git push命令,實際上是把當前分支master推送到遠端。

由於遠端庫是空的,我們第一次推送master分支時,加上了-u引數,git不但會把本地的master分支內容推送的遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。

從遠端倉庫轉殖

$ git clone [email protected]:jack-cool/learngit.git
git支援多種協議,包括https,但通過ssh支援的原生git協議速度最快

檢視分支:git branch

建立分支:git branch 切換分支:git checkout 建立+切換分支:git checkout -b 合併某分支到當前分支:git merge 刪除分支:git branch -d

用git branch命令檢視當前分支

$ git branch

* dev

master

git branch命令會列出所有分支,當前分支前面會標乙個*號。

建立dev分支,然後切換到dev分支

$ git checkout -b dev

switched to a new branch 'dev'

git checkout命令加上-b引數表示建立並切換,相當於以下兩條命令:

$ git branch dev

$ git checkout dev

switched to branch 'dev'

忽略特殊檔案
好在git考慮到了大家的感受,這個問題解決起來也很簡單,在git工作區的根目錄下建立乙個特殊的.gitignore檔案,然後把要忽略的檔名

填進去,git就會自動忽略這些檔案。

忽略檔案的原則是:

配置別名(偷懶,敲**很累的。。。)
如果敲git st就表示git status那就簡單多了,我們只需要敲一行命令,告訴git,以後st就表示status:

$ git config --global alias.st status
當然還有別的命令可以簡寫,比如co表示checkout,ci表示commit,br表示branch:

$ git config --global alias.co checkout

$ git config --global alias.ci commit

$ git config --global alias.br branch

Git基本使用

設定使用者名稱與郵箱 git config global user.name my name git config global user.email my email.com 從已有的git庫中提取 每次更改 的操作 更新本地 到最新版本 需要merge才能合到本地 中 git fetch 合併更...

git基本使用

git pull 從其它的版本庫 既可以是遠端的也可以是本地的 將 更新到本地,例如 git pull origin master 就是將origin這個版本庫的 更新到本地的master主分支。git pull可以從任意乙個git庫獲取某個分支的內容。用法如下 git pull username ...

git基本使用

git pull 從其它的版本庫 既可以是遠端的也可以是本地的 將 更新到本地,例如 git pull origin master 就是將origin這個版本庫的 更新到本地的master主分支。git pull可以從任意乙個git庫獲取某個分支的內容。用法如下 git pull username ...