Git 重要概念和常用命令

2021-09-13 13:12:12 字數 4028 閱讀 5955

本文是git的學習筆記,教程請移步 廖雪峰 git 教程。

目錄.git,是git的版本庫。git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有git為我們自動建立的第乙個分支master,以及指向master的乙個指標叫head。

git add把檔案新增進去,實際上就是把檔案修改新增到暫存區;

git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。

一大串類似 1094adb... 的是commit id(版本號),和svn不一樣,git的commit id不是1,2,3……遞增的數字,而是乙個sha1計算出來的乙個非常大的數字,用十六進製制表示。

為什麼commit id需要用這麼一大串數字表示呢?

因為git是分布式的版本控制系統,多人在同乙個版本庫里工作,如果大家都用1,2,3……作為版本號,那肯定就衝突了。

head 指向的版本就是當前版本,之所以可以回退版本這麼快,因為實際上只是改變了 head 指標的指向。

head嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,head指向的就是當前分支。

一開始的時候,master分支是一條線,git用master指向最新的提交,再用head指向master,就能確定當前分支,以及當前分支的提交點。每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長。

當我們建立新的分支,例如dev時,git新建了乙個指標叫dev,指向master相同的提交,再把head指向dev,就表示當前分支在dev上。

建立並切換分支:git checkout -b dev

git建立乙個分支很快,因為除了增加乙個dev指標,改改head的指向,工作區的檔案都沒有任何變化。

不過,從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次後,dev指標往前移動一步,而master指標不變。

在dev上的工作完成了,就可以把dev合併到master上。git怎麼合併呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合併。

切換回 master 分支:git checkout master

將 dev 分支合併到 master 分支上:git merge dev

合併完分支後,甚至可以刪除dev分支。刪除dev分支就是把dev指標給刪掉,刪掉後,我們就剩下了一條master分支。

刪除 dev 分支:git branch -d dev

在實際開發中,我們應該按照幾個基本原則進行分支管理:

首先,master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;

那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本發布時,再把dev分支合併到master上,在master分支發布1.0版本;

你和你的小夥伴們每個人都在dev分支上幹活,每個人都有自己的分支,時不時地往dev分支上合併就可以了。

所以,團隊合作的分支看起來就像這樣:

全域性設定提交**時的使用者資訊

git config --global user.name "[name]"

git config --global user.email "[email address]"

在當前目錄新建乙個git**庫

git init

新增指定檔案到暫存區

git add [file1] [file2] ...

新增當前目錄的所有檔案到暫存區

git add .

提交暫存區到倉庫區

git commit -m [message]

列出所有本地分支

git branch

列出所有遠端分支

git branch -r

新建乙個分支,但依然停留在當前分支

git branch [branch-name]

新建乙個分支,並切換到該分支

git checkout -b [branch]

切換到指定分支,並更新工作區

git checkout [branch-name]

建立追蹤關係,在現有分支與指定的遠端分支之間

git branch --set-upstream [branch] [remote-branch]

合併指定分支到當前分支

git merge [branch]

刪除分支

git branch -d [branch-name]

刪除遠端分支

git push origin --delete [branch-name]

顯示有變更的檔案

git status

顯示當前分支的版本歷史

git log

檢視命令歷史

git reflog

顯示暫存區和工作區的差異

git diff

檢視遠端庫資訊

git remote -v;

在本地建立和遠端分支對應的分支

git checkout -b branch-name origin/branch-name(本地和遠端分支的名稱最好一致)

建立本地分支和遠端分支的關聯

git branch --set-upstream branch-name origin/branch-name

取回遠端倉庫的變化,並與本地分支合併

git pull [remote] [branch]

上傳本地指定分支到遠端倉庫

git push [remote] [branch]

恢復暫存區的指定檔案到工作區

git checkout [file]

恢復暫存區的所有檔案到工作區

git checkout .

重置暫存區與工作區,與上一次commit保持一致

git reset --hard commit_id

當改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令 git checkout [file]。

不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令 git reset head [file],第二步用命令 git checkout [file]。

刪除工作區檔案,並且將這次刪除放入暫存區

git rm [file]

改名檔案,並且將這個改名放入暫存區

git mv [file-original] [file-renamed]

儲存現場

git stash

返回現場

git stash pop

git的概念和常用命令

官方定義 git是版本控制工具。這裡的版本其實是每一次發布的 git會把每一次提交的 都儲存下來,並給它乙個叫做 版本號 的編號。這類似於期刊出版的過程,每一次出版都有它的期號。git具有備份檔案的功能,允許我們找到修改前的檔案,可以 反悔 git具有分支機制,像寫 可以分出幾條支線。這樣允許我們在...

Git的概念及常用命令

一 概念git reflog 二 常用命令 命令 git init,將目錄變成git可以管理的倉庫 命令 git add,將檔案新增到git倉庫,可以多次新增 命令 git commit m,將檔案提交,只需一次提交 命令 git log,顯示最近到最遠的提交日誌 pretty onelint,將多...

常用命令 Git 常用命令大全

安裝教程可參照 廖雪峰老師的安裝教程。git config 在git中,使用git config 命令來配置 git 的配置檔案,git配置級別主要有3類 1 倉庫級別 local 本地 git 倉庫級別配置檔案,作用於當前倉庫。優先順序最高 2 使用者級別 global,全域性配置檔案,作用於所有...