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 原因:在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)