學習Git命令

2021-07-24 03:16:22 字數 1509 閱讀 1154

git 倉庫的一次commit記錄所提交目錄下所有檔案的快照,感覺像是大量的複製和貼上,但git並非如此!

git 希望提交的記錄盡可能的輕量,所以每次進行提交時,它不會簡單地複製整個目錄,條件允許的情況下,git會把提交壓縮成從**倉庫中的乙個版本到下乙個版本的變化合集,也叫作「增量delta」。

git還維護了「提交的建立時間」的歷史記錄,因此大部分提交都有祖先,一般在圖形解釋中會使用箭頭來表示這種關係,對於專案組成員來說,這份提交歷史對大家都有好處。

git提交記錄十分輕量並且可以快速切換!

git的分支同樣十分輕量,他們只是簡單地指向某個提交記錄而已——僅此而已。所以許多git愛好者會念叨:早點建分支!經常建分支!

建立分支沒有儲存或者記憶體上的開銷,所以按

邏輯分解工作比維護但已的**樹要簡單。

使用分支其實就是在說:我想包含本次提交及所有的父提交記錄。

切換分支,實際上是將head指向不同的提交。當前:head->master->hashcode1;使用命令 「git checkout bugfix」 後,head->bugfix->hashcode2; 

我們可以通過git branch 新建乙個分支,在其上開發新功能,然後合併分支,回到主線。

git merge 是第乙個實現合併的方法。合併產生乙個特殊的提交記錄,它包含兩個唯一父提交。有兩個父提交的提交記錄本質上是:「我想把這兩個父提交本身以及它們的父提交集合都包含進來」

rebasing 是在分支之間合併的第二個方法。rebasing 就是取出一系列的提交記錄,「複製」它們,然後把它們放在別的地方放下來。

雖然聽上去難以理解,rebasing的優勢是可以常遭更加線性的提交歷史。假如只允許使用rebasing。**庫的提交日誌/歷史會更好看。

head 是當前提交記錄的符號名稱——其實就是你正在其基礎上進行工作的提交記錄。

head總是指向最近的一次提交記錄,表現為當前工作樹。大多數修改工作樹的git命令都開始於改變head指向。

head通常指向分支名(比如 bugfix)。你提交(commit)時,改變了bugfix的狀態,這一變化則通過head變得可見。

指向為:head->bugfix->hashcode(當前分支的hash值)

通過將head指向hashcode的方法,由於hashcode比較長,用起來不方便。可以通過相對引用來實現。

git branch -f master head~3

強制移動master指向head的第**父提交。

使用git reset 實現將本地的分支記錄回退到上乙個提交記錄來實現撤銷改動,可以認為這是在「重寫歷史」,原來指向的提交記錄好像從來沒有提交過一樣。

如果需要撤銷更改並傳播給別人,則需要使用git revert。使用git revert實際上是在當前提交上新建乙個提交記錄與當前提交記錄的父提交相同。

以上,能夠實現開發者的主要需求,然後,剩餘的10% 可能在處理複雜的工作流時,非常重要。

git cherry-pick用於實現抓取其餘分支下的提交到當前分支;git tag 用於實現給一些里程碑式的提交打標;

git 命令學習

mkdir test 建立test資料夾 cd test 進入test檔案 git init 建立空白的git檔案 ls 檢視當前目錄的檔案內容 cd 返回上一目錄 vi xx.txt 編輯乙個txt文件 git status 檢視當前狀態 git commit m add add.txt m的後面...

Git命令學習

列出當前版本號 列出遠端倉庫 git remote v 選項,列出遠端倉庫位址 3.新增遠端倉庫 git remote add pb https address檢查當前檔案狀態 git status遠端倉庫的移除和重新命名 git remote rename firstname changednam...

git命令學習

git學習筆記 git的好處不用多說,本人只是借鑑他人的學習成果,一來對自己學習總結,二來方便日後用到時可以隨時檢視以及方便理解。首先,先在自己電腦裡安裝git客戶端,然後我們開始學習git命令 git命令大全 git config global user.name xiongyan 指定乙個名字 ...