1. 程式人生 > >Git基礎入門

Git基礎入門

Workspace:工作區

Index/Stage:暫存區,也叫索引

Repository:倉庫區(或本地倉庫),也儲存庫

Remote:遠端倉庫

從遠端倉庫克隆檔案到本地倉庫(ssh協議)

git clone 協議://使用者名稱@遠端倉庫ip:遠端埠/檔案路徑

 

列出所有Git當時能找到的配置

 

git config --list

git config <key>

 

克隆倉庫(github,http協議)

git clone [url] [自定義本地倉庫的名字]

 

初始化倉庫

git init

此時僅僅是建立了一個名為“.git”的子目錄,含有初始化Git倉庫中所有的必須檔案,但僅僅是一個初始化操作,專案中的檔案並沒有被跟蹤。

如果是在一個已經存在檔案的資料夾中進行初始化,需要利用git add對檔案進行跟蹤,利用git commit對檔案進行提交

檢查當前檔案狀態

git status

更為緊湊的風格

git status -s(git status --short)

輸出如下:

$ git status -s

M README.md

MM Rakefile

A lib/git.rb

M lib/simplegit.rb

?? LICENSE.txt

其中:

??:表示新新增的未跟蹤檔案

A:新新增到暫存區的檔案

M(M在左邊):修改過了並放入了暫存區

M(M在右邊):修改過了但是還沒有放入暫存區

MM:在工作區被修改並提交到暫存區後又在工作區中被修改,所以在暫存區和工作區都有被修改記錄

第一步

第二步

 

問題:使用git status

後,會有如圖所示fatal

原因:在GitTest中進行clone,但是GitTest這個資料夾並沒有初始化

解決:使用git init對此檔案進行初始化

 

初始化之後再次使用git status命令,會有提示,需要對檔案,通過git add 進行追蹤,然後通過

git commit 提交

 

向檔案中寫入內容(使用 > 覆蓋檔案內容,使用>>追加檔案內容)

echo ‘test test 11111’> 檔名

 

跟蹤新檔案(將檔案放入暫存區)

git add 帶字尾的檔名  提交指定檔案

git add .  提交所有變化到暫存區,包括檔案內容修改和新檔案,但不包括被刪除檔案

git add -u 會將被修改的檔案和被刪除的檔案提交到暫存區,不會提交新檔案(僅監控tracked files)

git add -A 提交所有變化

 

忽略檔案(待定)

檢視詳細的修改資訊

git diff:只顯示尚未暫存的改動,並不是自上次提交以來所做的所有改動

git diff --cached 檢視已經暫存起來的變化(--staged和--cached一樣)

綠色表示新增,紅色表示刪除

 

跳過使用git add進入暫存區域

git commit -a -m '必填提交資訊'

移除檔案

rm 檔名

 

git rm -cached 檔名:將檔案從暫存區移除,但仍保留在當前工作目錄中

git rm log/\*.log:刪除 log/ 目錄下的副檔名為 .log 的檔案

git rm \*~:刪除以 ~ 結尾的檔案

 

第一步

第二步

 

修改檔名

git mv 檔名.副檔名 新檔名.副檔名

 

檢視提交歷史

git log:顯示所有日誌

git log -p:顯示每次提交的內容差異(同git diff格式相同)

git log -2:顯示最近兩次提交(數字可以自定義)

git log --stat:檢視簡略總結

git log的幾種表示形式

https://git-scm.com/docs/pretty-formats:描述了格式佔位符的含義

 

撤銷操作

git commit --amend

撤回上次提交

 

取消暫存檔案

git reset HEAD 檔名

撤銷對檔案的修改

git checkout--檔名

檢視遠端倉庫

新增遠端倉庫

git remote add 別名 url

從遠端倉庫中抓取與拉取

git fetch 遠端倉庫的名稱(通過git remote獲得):

訪問遠端倉庫,從中拉取所有還沒有的資料,執行之後會擁有遠端倉庫中的所有分支的引用

如果使用clone克隆了一個倉庫,命令會自動將其(git clone 遠端倉庫)新增為遠端倉庫,並預設以origin為簡寫

git fetch不會自動合併

如果有一個分支設定為跟蹤一個遠端分支(後續提到),可以利用git pull進行抓取,然後合併遠端到當前分支

預設情況下,git clone會自動設定本地master分支跟蹤克隆的遠端倉庫的master分支(名稱可以改變),即 git pull 通常會從最初克隆的伺服器上抓取資料並自動嘗試合併到當前所在分支

推送到遠端倉庫

git push remote-name branch-name

當你和其他人在同一時間克隆,他們先推送到上游,你再推送時,就會被拒絕,你必須先拉取再推送

檢視遠端倉庫

git remote show remote-name

遠端倉庫的移除與重新命名

重新命名別名:git remote rename 舊名稱(or) 新名稱

移除一個遠端倉庫:git remote rm 遠端倉庫名稱(or)