工作區:電腦裡能看到的目錄,你修改檔案的地方
版本庫:工作區有乙個隱藏目錄.git,是git的版本庫,版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有git為我們自動建立的第乙個分支master,以及指向master的乙個指標叫head。
1、配置名字、email位址和ssh key
$ git config --
global user.name "your name"
$ git config --
global user.email "your email"
// --global表示你這台機器上所有的git倉庫都會使用這個配置
$ ssh-keygen
-t rsa -c
//在github中新增ssh key-->貼上id_rsa.pub檔案的內容
2、初始化本地git倉庫
$ git init //把這個目錄變成git可以管理的倉庫,如果不是空目錄,你需要把該目錄下的所有檔案新增到倉庫
3、檢視工作區當前版本狀態$ git status 1.txt
4、新增檔案到倉庫
$ git add
1.txt//可以一次新增多個檔案,用空格隔開
$ git add . //將當前目錄下的檔案全部新增到暫存區
$ git commit -m "1.txt建立"
5、檢視檔案變更:
git diff 1.txt
暫存區的檔案commit到分支上後暫存區仍然留有檔案,diff就是比較工作區和暫存區的不同
git diff --cached
比較的是版本庫和暫存區
git diff head -- 1.txt
比較工作區和版本庫的區別
6、版本回退
版本回退只會回退到commit時的狀態,commit後的修改會丟失。
$ git log
檢視提交日誌
在git中,用head表示當前版本,上乙個版本就是head^,上上乙個版本就是head^^,往上100個版本寫成head~100,回退到上乙個版本1.1,就可以使用git reset命令:$ git reset --hard head^
。
回到當前版本git reset --hard head
,此時,工作區和暫存區的修改將被刪除,回到最近的一次提交,但未追蹤的檔案和目錄修改不會刪除,將未追蹤的檔案目錄add到暫存區就會刪除。–hard表示該版本之後追蹤的修改都會被刪除。
重置到某個版本,並且不丟失該版本之後commit的修改git reset --soft commitid
,之後版本的修改會回退到暫存區,工作區的修改也不會丟失,可以繼續add。
如果你已經關掉了當前視窗,commit id找不到了,還可以用$ git reflog
來檢視你的每一次命令
git reflog 可以檢視所有分支的所有操作記錄(commit和reset的操作),包括已經被刪除的commit記錄,git log則不能察看已經刪除了的commit記錄(1.3記錄已被刪除)
7、撤銷修改
放棄在工作區的修改:$ git checkout -- 1.txt
,這裡有兩種情況:
一種是1.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是1.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。此時暫存區仍有檔案,如果想把暫存區的檔案清除,只在工作區保留修改,用$ git reset head 1.txt
,然後再用上一種方式清除工作區修改。
總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。如果已經commit就回退版本到上乙個版本。
8、刪除檔案
用$ rm 2.txt
命令刪除,這時工作區中就沒2.txt檔案了,想恢復就用$ git checkout -- 2.txt
,如果確實要從版本庫中刪除,就$ git rm 2.txt
,commit;git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。
9、分支管理
檢視分支:git branch
建立分支:git branch name
切換分支:git checkout name
建立+切換分支:git checkout -b name
合併某分支到當前分支:git merge name
刪除分支:git branch -d name
10、新增github遠端倉庫
先在github中建立乙個倉庫demo2,在本地(.git的上級目錄)執行下列命令
$ git remote add origin [email protected]:yateschiang/demo2.git
$ git push -u origin master
將本地修改推送到github
$ git push origin master
11、配置命令別名
git config --global
alias.st status //st表示status
git config --global
alias.unstage 'reset head'
12、刪除untracked files
untracked files指新建的檔案,還未add到暫存區
git clean -f
//刪除當前目錄下未追蹤的檔案,如果當前目錄下有兩個子目錄aa和bb,aa已經被追蹤,bb未被追蹤,這兩個目錄下都新建了檔案,那麼aa中的檔案會被刪除,bb中的不會
git clean -fd
//刪除當前目錄下未追蹤的目錄和檔案,aa中未被追蹤的目錄和檔案也會被刪除
git clean -n
//顯示將要刪除的未追蹤檔案的名字
git clean -nf
//同上
git clean -nfd
//顯示將要刪除的未追蹤目錄和檔案的名字
13、git pull –rebase
當本地commit乙個提交和遠端伺服器中的**有衝突(別人也改了相同的檔案)時可以在pull 中加 –rebase。加上 rebase 的意思是:
把本地 repo. 從上次 pull 之後的變更暫存起來
恢復到上次 pull 時的狀態
合併遠端的變更到本地
最後再合併剛剛暫存下來的本地變更
常用命令 Git 常用命令大全
安裝教程可參照 廖雪峰老師的安裝教程。git config 在git中,使用git config 命令來配置 git 的配置檔案,git配置級別主要有3類 1 倉庫級別 local 本地 git 倉庫級別配置檔案,作用於當前倉庫。優先順序最高 2 使用者級別 global,全域性配置檔案,作用於所有...
git 常用命令
檢視是否存在檔案需要上傳 git status git add git commit m 建立遠端倉庫 git remote add origin 116.255.146.153 ruby cd work daily project.git 更新git fetch 116.255.146.153 r...
git常用命令
詳細 1,git log p 命令來顯示每一次提交與其父節點提交內容之間快照的差異。2,為了檢視載入 staged 而並未提交 not committed 的內容差異,可以使用 git diff stage 命令 在git 1.6之前的版本中,使用 cached 適應情形 在執行git commit...