一、最小配置
git config --local 針對某個(gè)倉庫
git config --global 針對當(dāng)前用戶所有倉庫(常用)
git config --system 對系統(tǒng)所有用戶的倉庫都有效
1.1、配置
git config --global user.name "lanxiaobin"
git config --global user.email "lanxiaobin"
1.2、顯示config配置 加 --list
git config --list --global
二、創(chuàng)建倉庫并配置local用戶信息
2.1 創(chuàng)建git倉庫
git init gitproject/
2.2 配置local信息
git config user.name "localUserName" --local
三、工作區(qū)和暫存區(qū)和commit
3.1 從工作區(qū)添加到暫存區(qū)
echo "readme" > readme.txt
git add readme.txt
3.2 暫存區(qū)文件在工作區(qū)發(fā)生修改,提交到暫存區(qū)
git add -u 所有發(fā)生改動的暫存區(qū)文件都add
3.3 提交到倉庫
git commit -m'add file1.txt'
四、重命名
git mv readme.txt readme.md
五、gitlog
5.1只查看第一行l(wèi)og信息
git log --oneline
5.2 --all查看所有分支的提交歷史
git log --oneline --all
5.3 查看指定數(shù)目的歷史 -n4
git log --all -n4 --graph
5.4 可視化
gitk
六、git的tree、blob
6.1 查看文件
find project/ type -f
6.2 查看文件類型
git cat-file -t b8626c4cff
6.3 查看文件內(nèi)容
git cat-file -p b8626c4cff
七、分支
7.1新建分支
git branch dev
7.2 切換分支
git checkout dev
7.3 新建分支并切換到分支
git checkout -b dev2
7.4 刪除分支
git branch -d dev3
八、commit
8.1 修改最近一次commit信息
git commit -m'首次提交'
git commit --amend
8.2 對歷史commit修改
git rebase -i 要修改的commit的上一個(gè)commit
reword -- 修改提交的message
8.3 合并連續(xù)的多個(gè)commit為一個(gè)
git rebase -i 要合并的commit的上一個(gè)commit
squash -- 合并幾個(gè)commit為一個(gè)
8.4 合并不連續(xù)的多個(gè)commit為一個(gè)
...
九、比較
9.1 比較工作區(qū)和暫存區(qū)文件的差異
git diff fileName
git diff
9.2 比較暫存區(qū)和HEAD文件的差異
git diff --cached
9.3 比較不同提交的文件差異
git diff master dev --file3.txt
git diff commit_id1 commit_id2 -- file3.txt
十、恢復(fù)
10.1 暫存區(qū)恢復(fù)跟HEAD一樣
所有文件恢復(fù)
git reset HEAD
or
git reset HEAD^
部分文件恢復(fù)
git reset HEAD file3.txt
10.2 工作區(qū)恢復(fù)跟暫存區(qū)一樣
git checkout file3.txt
10.3 清除最近的commit
git log 查看最近提交的commit_id
git reset commit_id
10.4 刪除文件
git rm file3
10.5 文件臨時(shí)保存
git stash
git stash save "message"
查看臨時(shí)文件列表
git stash list
恢復(fù)臨時(shí)文件
git stash apply
恢復(fù)并丟掉臨時(shí)文件
git stash pop
11、git 備份
啞協(xié)議 (bare:不在工作區(qū)的裸倉庫)
git clone --bare /Users/lanshifu/Documents/極客時(shí)間-課程/git三劍客/gitproject ya.git
智能協(xié)議
git clone --bare file:///Users/lanshifu/Documents/極客時(shí)間-課程/git三劍客/gitproject zhineng.git
跟遠(yuǎn)端關(guān)聯(lián)
git remote add zhineng file:///Users/lanshifu/Documents/極客時(shí)間-課程/git三劍客/backup/gitproject zhineng.git
待續(xù)...
12.git pull 每次都要輸入密碼
到git項(xiàng)目根目錄
git config --global credential.helper store
git pull 輸入一次密碼,以后就會記住了
13.git ssh key 配置
cd ~/.ssh
ls
如果沒有配置過
ssh-keygen -t rsa -C "郵箱"
一路回車,然后
cat ~/.ssh/id_rsa.pub
復(fù)制去github、gitlab等網(wǎng)站
git 淺克隆
$ mkdir models # 創(chuàng)建一個(gè)與要clone的倉庫同名或不同命的目錄
$ cd models
$ git init #初始化
$ git remote add origin https://github.com/tensorflow/models.git # 增加遠(yuǎn)端的倉庫地址
$ git config core.sparsecheckout true # 設(shè)置Sparse Checkout 為true
$ echo "research/deeplab" >> .git/info/sparse-checkout # 將要部分clone的目錄相對根目錄的路徑寫入配置文件
$ git pull origin master #pull下來代碼
如果只想保留最新的文件而不要?dú)v史版本的文件,上例最后一行可以用git pull --dpeth 1命令,即“淺克隆”:
$ git pull --depth 1 origin master
git 淺克隆(2)推薦
直接在clone后面加上 -- depth 1
,表示只clone 最后一個(gè)commit
git clone --depth 1 https://github.com/Meituan-Dianping/walle.git