Git學習小結

2022-07-15 11:30:13 字數 4105 閱讀 5350

現在已經使用git在專案中做版本控制工具,但是從來沒有詳細的學過一遍git的命令列操作方法,這次也是通過廖雪峰的git教程在來仔細的學習了一遍。這篇文字也是做乙個學習的記錄。

廖雪峰git教程

命令把這個目錄變成git可以管理的倉庫 建立倉庫

向倉庫中新增檔案,實際上是吧檔案新增到暫存區

$ git add
提交檔案,實際上是把暫存區的所有內容提交到當前分支

$ git commit -m "提交說明"
命令可以讓我們時刻掌握倉庫當前的狀態

顧名思義就是檢視differencegit

$ git diff $ git diff head --該命令可以檢視工作區和版本庫裡面最新版本的區別
命令檢視提交日誌

git log --pretty=oneline

將日誌簡化顯示 一行

$ git log --graph

檢視分支合併日誌

$ git log --graph --pretty=oneline

檢視分支合併日誌,並一行顯示

$ git log --graph --pretty=oneline --abbrev-commit

檢視分支合併日誌,並一行顯示,簡化commit id 顯示

$ git reset --hard head^  

退回上乙個版本

$ git reset --hard 退回到指定的版本

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

head 表示是最新版本

在git中,用head表示當前版本,也就是最新的提交3628164...882e1e0(注意我的提交id和你的肯定不一樣),上乙個版本就是head,上上乙個版本就是head

,當然往上100個版本寫100個比較容易數不過來,所以寫成head~100。

用來記錄你的每一次命令:提交切換版本id等

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

一種是自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

$ git rm 從版本庫中刪除檔案
git跟蹤並管理的是修改,而非檔案。

第一次修改 -> git add -> 第二次修改 -> git commit

你看,我們前面講了,git管理的是修改,當你用git add命令後,在工作區的第一次修改被放入暫存區,準備提交,但是,在工作區的第二次修改並沒有放入暫存區,所以,git commit只負責把暫存區的修改提交了,也就是第一次的修改被提交了,第二次的修改不會被提交。

撤銷修改的小結:

場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file

場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head file,就回到了場景1,第二步按場景1操作。

場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,可以使用退回版本,不過前提是沒有推送到遠端庫。

第1步:建立ssh key。在使用者主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsaid_rsa.pub這兩個檔案,如果已經有了,可直接跳到下一步。如果沒有,開啟shell(windows下開啟git bash),建立ssh key:

$ ssh-keygen -t rsa -c "[email protected]"
第2步:登陸github,開啟「account settings」,「ssh keys」頁面:

然後,點「add ssh key」,填上任意title,在key文字框裡貼上id_rsa.pub檔案的內容。

在本地倉庫下使用一下命令,將本地倉庫和github倉庫關聯起來

$ git remote add origin [email protected]:github賬戶名/倉庫名.git

origin是預設的遠端倉庫名稱,可以自己修改

將本地的倉庫推送到遠端

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

$ git push origin branchname

在本地倉庫提交後推送到遠端倉庫

將遠端庫拉下來(更新遠端庫的修改)

$ git branch --set-upstream localbranch origin/dev   

localbranch:本地分支 origin/dev:遠端庫名/分支

遠端clone倉庫

$ git clone [email protected]:github賬戶名/倉庫名.git
檢視分支

git branch 建立分支

git checkout 切換分支

git checkout -b 建立+切換分支

注:從遠端庫clone下來時,預設只能看到本地的master分支,如果想在clone下的庫的其它分支開發可以用一下命令

$ git checkout -b dev origin/dev 遠端origin庫的dev分支

合併某分支到當前分支:

$ git merge --no-ff -m "commit content" branchname

git 預設的合併方式是 fast forward 這種模式下,刪除分支同樣會刪除分支資訊

以--no-ff模式合併分支,會生成乙個新的commit,刪除分支後能看見分支的歷史資訊

預設 fast forward模式

git branch -d 刪除分支

git branch -d 強行刪除乙個未合併的分支

把當前的工作區「儲存」起來,可以切換的其他分支修改bug,用於當前開到一半,需要去別的分支修改bug 的情況

git stash drop

刪除stash

git stash list

檢視當前stash的列表

恢復stash,但stash內容並不刪除

當有多個stash列表的時候,可以指定stash id 恢復

git stash pop

恢復的同時把stash內容也刪了

檢視遠端庫的資訊

git remote -v 

檢視遠端庫的詳細資訊

tag就是給提交的乙個commit繫結在一起,起乙個更易於查詢的名稱。

git tag 用於新建乙個標籤,預設為head,也可以指定乙個commit id;

git tag -a -m "blablabla..."可以指定標籤資訊;

git tag -s -m "blablabla..."可以用pgp簽名標籤;

git tag可以檢視所有標籤。

git push origin 可以推送乙個本地標籤;

git push origin --tags可以推送全部未推送過的本地標籤;

git tag -d 可以刪除乙個本地標籤;

git push origin :refs/tags/可以刪除乙個遠端標籤。

Git 學習小結

git是目前最先進的分布式版本控制系統。所謂的分布式,是相對於集中式而言的,比如svn就是集中式的版本控制系統。集中式,顧名思義,就是擁有一台處於中心地位的伺服器,上面存放著版本庫。可以想象成網路裡的c s結構。同樣的,分布式就可以理解成p2p結構,沒有特定的伺服器,每台電腦都可以擁有版本庫,這樣就...

git學習小結

學習了廖雪峰老師的git教程,自己也想根據自己的理解做一些總結,以便初學者快速學習。git是分布式版本控制系統 一.git安裝 1.在ubuntu,debian 通過sudo apt get install git 就可以直接安裝 老一點的debian和ubuntu 用sudo apt get in...

Git學習小結

看了廖雪峰老師關於 git 的部落格 收穫還蠻多,需要記得東西比較多,所以寫篇部落格回顧一下學到的東西。git clone 你想要複製的倉庫位址 從遠端複製倉庫 git init 新建倉庫 git add 檔名稱 提交此檔案到暫存庫 git add 提交工作目錄下所有變動的檔案到暫存庫 git st...