使用Git版本控制器差很少有一年多的時間了,在這一年多的時間裏對這個傳說的的分佈式版本控制工具備了必定的瞭解。在實戰項目開發中,對關於如何在經過Git提交項目,以及如何使用Git命令對提交的文件進行撤銷,回退/還原,刪除等相關操做有了必定的瞭解。如下主要是我在工做,學習中對本身使用Git的一些總結。git
參考博客地址(該篇博客解釋的很是詳情,你們能夠對照着進行安裝):github
未跟蹤(untrack):未追蹤,表示文件爲新增長的安全
已修改(modified):表示修改了文件,但還沒保存到git倉庫中服務器
已暫存(staged):表示修改的文件提交到了暫存區,可是尚未提交到本地Git版本庫分佈式
已提交(committed):表示數據安全提交到了本地Git版本庫工具
Working Directory(工做目錄):即正在編輯的文件狀態。文件狀態爲未跟蹤(untrack)和已修改(modified)在此區域內學習
Staging Area(暫存區):保存了下次將提交的文件列表信息。文件狀態爲已暫存(staged)在此區域內fetch
Repository(本地倉庫):提交到本地倉庫的文件spa
Repository(遠程倉庫):已提交到遠程計算機內的文件
提交流程爲:工做區》暫存區》本地版本庫》遠程版本庫
在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 remote -v
//查看用戶名 git config user.name //查看郵箱地址 git config user.email
git clone
注意:提交代碼以前,需先從服務器上面拉取代碼,以防覆蓋別人代碼!
git pull
git status
git add + 文件 git add -u + 路徑:將修改過的被跟蹤代碼提交緩存 git add -A + 路徑: 將修改過的未被跟蹤的代碼提交至緩存
git commit -m 「功能修改,這裏是註釋」
git push origin master
解決辦法:利用 git reset 命令將撤回緩存中的代碼。
解決辦法:
git reset —soft + 版本號
回退到某個版本,只回退了commit的信息,不會改變已經修改過的代碼。
git reset —hard + 版本號
完全回退到某個版本,本地的代碼也會改變上一個版本內容
是拉取遠程分支更新到本地代碼庫的操做,好比遠程倉庫的學習資料有更新,須要把新的內容下載下來,可使用git pull 是至關於從遠程倉庫獲取最新版本,而後再與本地分支merge(合併)!
理解 fetch 的關鍵, 是理解 FETCH_HEAD,FETCH_HEAD指的是: 某個branch在服務器上的最新狀態’。這個列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行對應於遠程服務器的一個分支。
當前分支指向的FETCH_HEAD, 就是這個文件第一行對應的那個分支,使用git fetch獲取遠程倉庫最新代碼,可是不會自動合併(merge),git fetch更安全一些,由於在merge(合併)前,咱們能夠查看更新狀況,而後再決定是否合併。
在使用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 clone --depth=1 git@github.com:xxx.git
git branch -vv 查看當前開發分支 git branch 查看本地全部分支 git branch -r 查看遠程全部分支 git branch -a 查看本地和遠程全部分支