git常用命令使用教程

一、基本概念

學習git我們首先要明確三個概念:
工作區: 就是在你電腦本地的目錄
暫存區: 存放在 .git文件夾下的 index文件中
版本庫: 就是 .git 文件夾,這是一個隱藏的文件你要勾選才能看到
在這裏插入圖片描述
三者之間的關係圖如下所示
在這裏插入圖片描述

二、常用命令

2.1 創建本地倉庫

此處要用到的命令如下

	cd d:		(進入D盤)
	mkdir test	(創建test文件夾)
	cd test 	(進入test文件夾)
	git init	(初始化倉庫)

方法一:只使用命令行

操作流程如下:

  1. 打開git bash
  2. 執行以下命令就可以在D盤的test文件夾下創建一個倉庫
    在這裏插入圖片描述
    在這裏插入圖片描述

方法二:簡單操作

操作流程如下:

  1. 直接打開D盤手動新建一個test文件夾,然後進入test文件夾
  2. 在這裏右鍵選擇Git Bash Here打開git bash然後直接執行命令git init即可
    在這裏插入圖片描述
    在這裏插入圖片描述

2.2 提交文件到版本庫中

此處要用到的命令如下

	git add ."."表示提交所有修改過的文件)
	git add 文件名			(對指定文件進行提交,例如git add test1.txt)
	git status      		(查看當前的狀態)
	git commit -m"描述信息" (提交修改並填寫相關描述,描述不能爲空)

操作流程如下:

  1. 我們在文件夾中創建一個用來提交的文件,這裏我簡單創建了一個文本文檔test1.txt在這裏插入圖片描述
  2. 右鍵選擇Git Bash Here打開git bash,然後執行命令git add . 你也可以後面加上具體的文件名,就是單獨對一個文件進行提交例如 git add test1.txt
    這裏的執行完add命令之後,還沒有完成真正的提交只是把文件添加到暫存區中(簡單來說就是添加到一個臨時的提交任務目錄)
  3. 執行git status,查看當前的一些狀態。可以看到它顯示有改變需要提交,一個new file新的文件。
    在這裏插入圖片描述
  4. 確認提交,執行命令 git commit -m"第一次提交" -m也就是message的意思執行完命令出現如下所示也就是提交成功了
    在這裏插入圖片描述
  5. 檢查狀態,我們再次執行 git status可以看到現在變成了nothing to commit
    在這裏插入圖片描述

2.3 分支管理

一般來說在開發過程中,master分支上是穩定的發佈版本,每個人都要創建自己的dev分支,在自己的分支上進行開發,當自己的分支測試沒有問題之後,再合併到一個公告的dev分支,最後將公共的dev分支合併到master分支上,也就完成了新項目的發佈

2.3.1 查看所有分支

此處要用到的命令如下

	git branch	(列出所有的分支)

執行命令,可以看到當前是隻有一個默認的master分支
在這裏插入圖片描述

2.3.2 創建一個新的分支

此處要用到的命令如下

	git branch 分支名稱	 (如 git branch dev)

我們來創建一個新的分支dev,執行命令 git branch dev。然後我們再次執行git branch可以看到現在已經有了兩個分支,高亮顯示的爲當前選中的分支。
在這裏插入圖片描述

2.3.3 分支切換

此處要用到的命令如下

	git checkout 要切換到的分支名稱	(如 git checkout dev)
	git switch 要切換到的分支名稱	(如 git switch dev)

我們將分支切換到 dev 執行命令 git checkout devgit switch dev,然後我們再次執行 git branch 可以看到現在dev變成高亮顯示,已經切換到了 dev 分支。
在這裏插入圖片描述

2.3.4 創建一個新的分支並且立刻切換到該分支

此處要用到的命令如下

	個人覺得switch更好理解,推薦使用
	git checkout -b 分支名稱	(如 git checkout -b test)
	git switch -c 分支名稱	(如 git switch -c test)

我們分別創建兩個新的分支 testtest2 ,執行命令 git checkout -b testgit switch -c test2,可以看到提示我們已經切換到了新的分支 testtest2,兩種命令都是沒有問題的。
在這裏插入圖片描述

2.3.5 刪除分支

此處要用到的命令如下

	git branch -d 分支名稱	(如 git branch -d test)

注意: 我們不能刪除當前所在的分支,例如我們當前處於test分支,如果這時我們刪除test分支就會出現如下報錯
在這裏插入圖片描述
所以我們需要先切換到其他分支,然後再進行test分支的刪除就沒有問題了,可以正常的進行刪除,如下所示
在這裏插入圖片描述

2.3.6 分支合併及合併衝突解決

此處要用到的命令如下

	git merge 要合併到當前分支的分支名稱 	(如 git merge dev)

注意: 該命令的作用是將指定的分支合併到當前所在的分支,也就是說如果我們想要將dev分支上的內容合併到master分支上,那麼我們就需要先切換到master分支上然後再執行該命令纔可以。

現在我們要將dev分支下所做的修改整合到 master分支上
操作流程如下:

  1. 切換到 master分支將 test1.txt中的內容修改如下,然後進行add、commit等操作進行提交。
    在這裏插入圖片描述
  2. 切換到 dev分支下將 test1.txt中的內容修改如下,然後進行add、commit等操作進行提交。
    在這裏插入圖片描述
  3. 切換回 master分支,然後執行命令 git merge dev,這時我們發現報錯了,說 test1.txt 文件存在衝突自動合併失敗了(這裏是因爲我們在dev分支中把之前的aaa刪掉了所有才有了衝突),所以我們需要手動解決衝突。
    在這裏插入圖片描述
  4. 打開 test1.txt 可以看到多了 <<<<<<< ======== >>>>>>>>>的分隔線,此時執行git status也可以看到現在是有問題的,所以我們要做的就是手動的去修改這個文本。
    在這裏插入圖片描述
  5. 修改 test1.txt 文件爲我們希望的樣子
    在這裏插入圖片描述
  6. 手動提交修改後的文件,並且再次查看git status 可以看到已經沒問題了
    在這裏插入圖片描述

我們再來說一下沒有衝突是什麼樣子
如下截圖是沒有衝突時的結果,我就不做具體演示了。
簡單說一下,這裏我又建了一個新的分支newdev
操作流程如下:

  1. master分支上提交好文本test1.txt之後,切換到newdev分支。
  2. 然後再不對原有內容做修改的情況下直接在test1.txt上增加一行內容然後提交
  3. 切換回到master分支上進行合併操作
  4. test1.txt就會變成在newdev分支中看到的那樣,不會出現上面提到的<<<< ==== >>>>三種分隔線。
    在這裏插入圖片描述
2.3.7 抓取分支

此處要用到的命令如下

	git pull origin master   (將遠程倉庫的master分支抓取到本地倉庫默認與當前本地所在分支進行合併)
	git pull origin master:本地分支名 (將遠程倉庫的master分支與本地指定的分支進行合併,如git pull origin master:dev)
	git pull origin 遠程分支名:本地分支名  (將遠程倉庫指定的分支與本地指定的分支進行合併)
	git pull 遠程主機名 遠程分支名:本地分支名 (遠程主機名一般默認爲origin,本地分支名如果不寫的話就默認是當前所在分支)

情景模擬: 你正在和多人協同開發一個項目,這時有人向遠程倉庫中推送了一些公共的文件,你需要把這些文件獲取下來,那麼這時你就需要用到抓取分支。
注意: 拉取分支獲取到的是遠程倉庫該分支上發生變化的內容,這個變化是跟你上一次拉取分支時做對比。也就是說早上九點的時候你抓取了一次分支,十點的時候其他人對上面的一個文件進行了修改,那麼十一點時你再次去抓取分支時,獲取的只是這一個被修改的文件。

2.3.8 推送分支

此處要用到的命令如下

	git push 遠程主機名 本地分支名:遠程分支名(把指定的本地分支推到指定的遠程主機遠程分支上,遠程分支可以直接寫名稱或者是 主機名/分支名例如origin/dev)
	git push 遠程主機名 遠程分支名	(把本地分支推送與之對應的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建)
	git push 遠程主機名:遠程分支名	(刪除指定的遠程分支,等同於推送一個空的本地分支到遠程分支)
	git push -u 遠程主機名 本地分支名(指定默認推送規則,下次直接 git push 即可)

2.4 容錯保護,修改恢復

此處要用到的命令如下

	git checkout 文件名稱/路徑/. 
   	   (如 git checkout test1.txt ;
    	對所有的文件進行操作就使用 . ;
    	對於某一個目錄下的所有文件就可以使用如 /src )

操作流程如下:

  1. 我們在文本中輸入1111然後對他進行提交
    在這裏插入圖片描述
    在這裏插入圖片描述
  2. 提交之後我們再次對這個文本進行修改,我們增加一行2222
    在這裏插入圖片描述
  3. 此時如果我們想要撤銷這一次添加2222的修改,那麼我們就可以執行命令
    git checkout test1.txt,再次打開文本可以看到2222消失了,說明撤銷成功
    在這裏插入圖片描述
    在這裏插入圖片描述

2.5 修改存檔

此處要用到的命令如下

	git stash 		(對當前沒有完成的操作進行一個存檔)
	git stash pop 	(讀取存檔)

情景模擬: 當你在dev分支上進行開發時,這時你被要求去修改一個master分支上面的bug,所以你需要去創建一個臨時的分支去修復它,但是你dev分支上的內容還沒有做完,你也不想進行提交,那麼這時你就需要存檔功能了。

操作流程如下:

  1. 我們對 test1.txt進行一定的修改,然後執行 git status查看當前狀態。可以看到一開始的狀態是有文件修改但沒有被提交。
  2. 執行 git stash之後可以看到狀態變成了nothing to commit,分支變成乾淨的了,此時你就可以去合併分支了。
  3. 合併完之後你可以再切換回之前的分支,然後再通過git stash pop來讀取存檔。查看狀態,可以看到再次顯示了修改後未被提交的文件。
    注意: 這裏我沒有進行合併分支操作,主要是演示這個存檔功能的使用效果
    在這裏插入圖片描述

2.6 本地倉庫與遠程倉庫關聯

此處要用到的命令如下

	git remote add origin 遠程倉庫地址  (將本地倉庫與遠程倉庫關聯)
	git push origin master				(本地推送主分支)

情景模擬: 我們先在本地創建了一個git的倉庫,然後我們想要將他推送到遠程倉庫中(如GitHub、碼雲、gitLab等)

操作流程如下:

  1. 這裏我以碼云爲例,在碼雲上創建一個倉庫,可以看到創建好之後下面也有入門教程告訴我們怎麼進行倉庫的關聯
    在這裏插入圖片描述
  2. 不管你是使用什麼平臺,主要就是找到遠程倉庫的地址就可以,在克隆下載的按鈕處就可以找到。
    在這裏插入圖片描述
  3. 本地執行命令git remote add origin 遠程倉庫地址,就關聯好了
    在這裏插入圖片描述
  4. 現在你就可以將本地的東西,推送到遠程倉庫了,這裏我們將master分支進行推送。執行命令git push origin master,可以看到就推送成功了。
    在這裏插入圖片描述
  5. 最後我們去碼雲中看一下是不是真的推送成功了,刷新碼雲倉庫,可以看到我們本地的test1.txt已經出現在了遠程倉庫中,說明確實成功了。
    在這裏插入圖片描述

2.7 推送分支時發生衝突

此處要用到的命令如下

	git push origin master   (推送主分支)
	git pull origin master    (抓取主分支)

情景模擬: 你正在和多人協同開發,此時其他人向遠程倉庫推送了自己的master分支,這時你如果也想推送自己的分支就會失敗。此時你要將遠程倉庫更新後的master分支抓取下來(如果是抓取其他的分支,就將master修改爲對應的分支名稱即可),然後再推送自己的分支即可。

操作流程如下:

  1. 爲了模擬其他人進行了推送的情況我們手動在碼雲上添加一個README.md文件
    在這裏插入圖片描述
  2. 我們在本地對 test1.txt做一點內容的修改,然後重新提交。
  3. 嘗試推送分支,可以看到現在報錯了
    在這裏插入圖片描述
  4. 我們需要抓取新的 master分支,執行命令 git pull origin master,然後我們發現本地文件夾中多了 README.md文件,說明抓取成功了。
    在這裏插入圖片描述
    在這裏插入圖片描述
  5. 現在我們再次進行推送,可以看到沒有報錯推送成功
    在這裏插入圖片描述

2.8 克隆倉庫

此處要用到的命令如下

	git clone 遠程倉庫地址
	git clone -b 分支名稱 遠程倉庫地址  (克隆指定的遠程分支)
	git clone 遠程倉庫地址 指定目錄	   (將倉庫克隆到指定的目錄)

情景模擬: 你現在要接手一個新的項目,當前項目存放在遠程倉庫中,你需要先將項目下載下來,把遠程倉庫克隆到本地。
注意: 克隆的目錄一定要是空的,SSH方式克隆要先對遠程倉庫配置公鑰否則會無法克隆。
操作流程如下:

  1. 找到遠程倉庫地址選擇HTTPS的地址或者是SSH的地址都可以
    在這裏插入圖片描述
  2. 我們新建一個文件夾test2然後進入目錄,右鍵打開git bash。執行命令
    git clone 遠程倉庫地址 然後可以看到,它幫我新創建了一個git_test_warehouse的文件夾然後將內容克隆到了這個文件夾裏。
    在這裏插入圖片描述
    在這裏插入圖片描述
  3. 我們試一下克隆到指定目錄,我們設定目錄爲D盤下的test3,可以看到也沒有任何問題。
    在這裏插入圖片描述
    在這裏插入圖片描述

2.9 查看遠程分支信息

此處要用到的命令如下

	git remote
	git remote -v	(查詢結果更加詳細)

在這裏插入圖片描述

2.10 查看日誌

此處要用到的命令如下

	git log
	git log --oneline	(查詢結果比較簡潔)

git log
在這裏插入圖片描述
git log --oneline
在這裏插入圖片描述

2.11 版本回退

此處要用到的命令如下

	git log --pretty=oneline
	git reset --hard 版本號
	git push -f origin master
	git reflog

情景模擬: 在dev分支上做了修改提交之後,本來是要推送dev分支到遠程,卻錯誤的將dev分支與本地的master分支合併,並將master分支推送到了遠程,現在我們要撤銷這一系列的操作。

操作流程如下:

  1. 執行 git log --pretty=oneline 命令查看提交記錄,找到你要回到的版本號(左側黃色的一串字符)
    在這裏插入圖片描述
  2. 執行命令 git reset --hard 版本號 回到之前的版本,如果你回到了錯誤的版本想要再回到之前的版本,那麼你需要執行命令 git reflog查看你的操作記錄,然後在執行 git reset hard “版本號”(版本號還是左側的黃色字符串,注意這裏輸入版本號時要加上雙引號)
    在這裏插入圖片描述
  3. 執行命令 git push -f origin master 強行推送現在的版本,這樣一來遠程倉庫中先前的提交就會消失

注意: 如果最後一個強行推送失敗報錯 OpenSSL SSL_connect: Connection was reset in connection to git.e234.top:443,那麼就執行命令
git config --global --unset http.proxy 然後再次推送即可。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章