1. 程式人生 > >Git的一些常見操作和問題

Git的一些常見操作和問題

git使用文件

1. git倉庫區域關係

  • 工作區指的是我們平常使用得分存放工作檔案的檔案位置區域,也就是檔案管理器肉眼可見的位置

  • 版本庫位於工作區域根目錄下的一個隱藏目錄.git目錄內

  • stage區也叫暫存區,位於.git/index檔案,他是一個檔案,而不是一個目錄

  • master區域:這裡其實這樣寫會造成誤解,master是一個分支名稱,commit的操作時間暫存區的檔案永久新增到本地倉庫,途中matster區域應該理解為本地倉庫,而這個本地倉庫並不等同於前面的工作區,這個本地倉庫室友git進行管理的一個倉庫,同時其原理儲存的是每次commit時,倉庫的快照,而非真是的各種檔案。

  • HEAD代表當前git狀態指向,如圖為master分支

    2. git狀態的變化

    CxVLt0.png

  • 在工作區對檔案進行修改以後,使用git status檢視檔案狀態,被修改的檔案將呈現為紅色狀態,即為提交狀態

    CxVOhV.png

  • 使用git add 命令提交檔案到暫存區,檔案狀態將變為綠色

    CxVzX4.png

    git add . 新增所有改動檔案到暫存區

    git add fileName 新增指定檔案到暫存區

  • 使用git commit 命令將暫存區檔案永久性新增到本地倉庫

    git commit -m “remarks”

  • 使用git push 將本地倉庫推送到遠端倉庫

    git push

    push 時可能遇到error,通常情況是由於遠端倉庫最近一次推送者並不是你自己,所以遠端倉庫存在你本地艙部並不存在的檔案或者修改,如圖:

    CxZTgO.png

    這時,你需要先pull遠端倉庫的變動併合併到本地分支,通常的操作為:

    git pull origin master

    git pull操作其實並不是一個操作,而是git fetch和git merge兩步操作,中文解釋為拉取併合並

    CxeS8f.png

    上述pull失敗原因是由於未指定從哪裡進行pull程式碼,修改為:

    git pull origin master

如果繼續提示失敗,日誌提示為CONFILCT ,則說明你和另外一個開發者修改了同一份檔案,這時需要解決衝突,解決完衝突需要重新add和commit,最後push。如下圖衝突示例:

CxwB38.png

​ HEAD和等號之間部分為你的程式碼部分,等號到bugfix02之前為另一位開發者程式碼部分,此時需要決定保留你的或者他的,或者兩個都保留。

3. 標準流程

git add .

git status 確認修改檔案已經新增到暫存區,並不是git add .一定會成功提交到暫存區

git pull origin master

git commit -m “remarks”

git push origin master

按照上面的步驟順序執行,通常不會出問題,除了問題檢視是否與第二部分內的情況對應

4. 常用操作

  • git remote show 檢視當前遠端倉庫連結情況

  • git checkout -b dev 建立dev分支並且換到dev分支

  • git branch -a 檢視所有分支

  • git rm -rf –cache . 清空本地倉庫(不是刪除),通常是在修改了gitignore檔案後使用,是gitignore生效

  • git clone -b dev http://11.11.11.11/aaa/aaa.git 克隆遠端倉庫,並建立本地dev分支與遠端dev分支對應,並切換到dev分支

  • git logs 檢視最近上傳記錄日誌 按q退出

    CxehLQ.png

  • git log –pretty=oneline README.md 檢視某個檔案的歷史提交記錄(指的是commit是的備註)

    CxmAyD.png

  • git show 8a462f8971c0b1aa939a90add1a1bad96a4f3896

    檢視上述圖片內8a462f8971c0b1aa939a90add1a1bad96a4f3896快照上,README.md檔案內容的變化情況

    CxMZgP.png

  • git status 檢視工作區檔案狀態

git的基本使用大概就這些,關於分支,由於我們只是用一個分支進行管理,這裡就不詳細說明分支的概念的基本使用了,推薦一個文件,詳細說明了git的使用,下面的網站,很形象的介紹了git:Git教程-廖雪峰