前言:
使用Git版本控制器差不多有一年多的時間了,在這一年多的時間裡對這個傳說的的分布式版本控制工具有了一定的了解。在實戰項目開發中,對關于如何在通過Git送出項目,以及如何使用Git指令對送出的檔案進行撤銷,回退/還原,删除等相關操作有了一定的了解。以下主要是我在工作,學習中對自己使用Git的一些總結。
Git安裝教程(Windows安裝超詳細教程):
參考部落格位址(該篇部落格解釋的非常詳情,大家可以對照着進行安裝):
https://www.jianshu.com/p/414ccd423efc
Git檔案的四種狀态:
未跟蹤(untrack):未追蹤,表示檔案為新增加的
已修改(modified):表示修改了檔案,但還沒儲存到git倉庫中
已暫存(staged):表示修改的檔案送出到了暫存區,但是還沒有送出到本地Git版本庫
已送出(committed):表示資料安全送出到了本地Git版本庫
Git工作的四個區域:
Working Directory(工作目錄):即正在編輯的檔案狀态。檔案狀态為未跟蹤(untrack)和已修改(modified)在此區域内
Staging Area(暫存區):儲存了下次将送出的檔案清單資訊。檔案狀态為已暫存(staged)在此區域内
Repository(本地倉庫):送出到本地倉庫的檔案
Repository(遠端倉庫):已送出到遠端計算機内的檔案
送出流程為:工作區》暫存區》本地版本庫》遠端版本庫
多個Git賬号的登入與切換:
在Git Bash Here的控制台裡輸入:
git config --global user.name "你的名稱"
git config --global user.email "你的郵箱"
切換完成後,檢視對應的賬号:
git config user.name
輸出賬号名稱:YSGStudyHards
詳情參考部落格:https://blog.csdn.net/qq_36602939/article/details/79794686
檢視Git項目遠端倉庫位址:
git remote -v

檢視使用者名和郵箱位址:
//檢視使用者名
git config user.name
//檢視郵箱位址
git config user.email
拷貝一個Git倉庫到本地:
git clone
開發環境中Git完整送出步驟:
首拉取伺服器代碼:
注意:送出代碼之前,需先從伺服器上面拉取代碼,以防覆寫别人代碼!
git pull
檢視目前工作目錄樹的工作修改狀态(這個指令在git中使用最頻繁了,原因會告訴你下一步該做的事情):
git status
将工作區修改添加的檔案送出到暫存區:
git add + 檔案
git add -u + 路徑:将修改過的被跟蹤代碼送出緩存
git add -A + 路徑: 将修改過的未被跟蹤的代碼送出至緩存
将暫存區代碼送出到本地倉庫中:
git commit -m “功能修改,這裡是注釋”
将代碼推送到伺服器(主分支):
git push origin master
Git送出過程遇到問題:
誤将代碼送出到暫存區中(git add):
解決辦法:利用 git reset 指令将撤回緩存中的代碼。
誤将暫存區代碼送出到本地倉庫(git commit):
解決辦法:
git reset —soft + 版本号
回退到某個版本,隻回退了commit的資訊,不會改變已經修改過的代碼。
git reset —hard + 版本号
徹底回退到某個版本,本地的代碼也會改變上一個版本内容
git pull和git fetch的用法及差別:
git pull (拉取):
是拉取遠端分支更新到本地代碼庫的操作,比如遠端倉庫的學習資料有更新,需要把新的内容下載下傳下來,可以使用git pull 是相當于從遠端倉庫擷取最新版本,然後再與本地分支merge(合并)!
git fetch (提取):
了解 fetch 的關鍵, 是了解 FETCH_HEAD,FETCH_HEAD指的是: 某個branch在伺服器上的最新狀态’。這個清單儲存在 .Git/FETCH_HEAD 檔案中, 其中每一行對應于遠端伺服器的一個分支。
目前分支指向的FETCH_HEAD, 就是這個檔案第一行對應的那個分支,使用git fetch擷取遠端倉庫最新代碼,但是不會自動合并(merge),git fetch更安全一些,因為在merge(合并)前,我們可以檢視更新情況,然後再決定是否合并。
Git撤銷,回退/還原,删除操作:
Git取消從工作區送出到暫存區的檔案追蹤:
在使用git的時候,有些檔案是不需要上傳的,是以就可以修改
例如:
如果是對所有檔案都取消跟蹤的話,就是
git rm -r --cached . //不删除本地檔案
git rm -r --f . //删除本地檔案【不推薦使用,因為會把本地的檔案也給删除了】
對某個檔案取消跟蹤
git rm --cached readme1.txt //删除readme1.txt的跟蹤,并保留在本地(推薦使用)
git rm --f readme1.txt //删除readme1.txt的跟蹤,并且删除本地檔案。
工作區于暫存區之間的送出回退操作:
# 添加指定檔案到暫存區
git add [file1] [file2] ...
# 添加指定目錄到暫存區,包括子目錄
git add [dir]
# 添加目前目錄的所有檔案到暫存區
git add .
#當我們需要删除暫存區或分支上的檔案, 同時工作區也不需要這個檔案了, 可以使用
git rm file_path
#當我們需要删除暫存區或分支上的檔案, 但本地又需要使用, 這個時候直接push那邊這個檔案就沒有,如果push之前重新add那麼還是會有。
git rm --cached file_path(檔案名稱,ysg.txt)
#直接加檔案名 從暫存區将檔案恢複到工作區,如果工作區已經有該檔案,則會選擇覆寫
#加了【分支名】 +檔案名 則表示從分支名為所寫的分支名中拉取檔案 并覆寫工作區裡的檔案
git checkout
版本庫回退到工作區:
【這裡操作是已經送出了在本地代碼庫的操作】
#去掉上一次的送出(會直接變成add之前狀态,即取消追蹤)
git reset HEAD^
#去掉上一次的送出(變成add之後,commit之前狀态)
git reset --soft HEAD^
檢視送出曆史:
git log # 檢視送出曆史
git log -p <file> # 檢視指定檔案的送出曆史
git blame <file> # 以清單方式檢視指定檔案的送出曆史
git log --oneline # 檢視送出日志,并且隻顯示第一行
合并與衍合:
git merge <branch> # 合并指定分支到目前分支
git merge --abort # 取消目前合并,重建合并前狀态
git merge dev -Xtheirs # 以合并dev分支到目前分支,有沖突則以dev分支為準
git rebase <branch> # 衍合指定分支到目前分支
Git拉取時設定拉取深度:
git clone --depth=1 [email protected]:xxx.git
Git檢視分支檢視:
git branch -vv 檢視目前開發分支
git branch 檢視本地所有分支
git branch -r 檢視遠端所有分支
git branch -a 檢視本地和遠端所有分支
作者:追逐時光者
作者簡介:一個熱愛程式設計,善于分享,喜歡學習、探索、嘗試新事物,新技術的程式猿。
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果該篇文章對您有幫助的話,可以點一下右下角的【♥推薦♥】,希望能夠持續的為大家帶來好的技術文章,文中可能存在描述不正确或錯誤的地方,歡迎指正、補充,不勝感激 !