昨天開始學(xué)習(xí)git,摸索一天,記下若干要點(diǎn)位隶,權(quán)當(dāng)學(xué)習(xí)筆記,以備查漏補(bǔ)缺开皿。
-
GIT配置
** 安裝 **
windows版:https://git-for-windows.github.io** 創(chuàng)建版本庫 **
創(chuàng)建版本庫后涧黄,倉庫里的文件才能被GIT管理跟蹤起來。
- 首先創(chuàng)建新的空文件
```
$ mkdir gitPro // 默認(rèn)為安裝目錄赋荆,可輸入自定義目錄名笋妥,如 $ mkdir E://gitPro,
$ cd gitPro // $ cd E://gitPro
$ pwd // pwd命令用于顯示當(dāng)前目錄
```
- 然后通過 `git init ` 命令創(chuàng)建,目錄下會生成 `.git` 的目錄窄潭,用來跟蹤管理版本庫春宣。
```
$ git init
```
- 也可以右鍵單擊文件,選擇 ` Git Bash Here `,然后同樣輸入`git init `命令創(chuàng)建月帝。以后其他命令也可以這樣操作躏惋。
- 命令 `git add` 把文件添加至?xí)捍鎱^(qū)
提交單個(gè)文件時(shí) `git add <file>`,空格隔開輸入多個(gè)文件名嚷辅,可同時(shí)提交多個(gè)文件 ;批量提交時(shí)一般使用 `git add . `簿姨,`git add -u` , `git add -A` 這三個(gè)命令簸搞。 區(qū)別在于:
- `git add .` 提交所有變化扁位,包括文件內(nèi)容修改以及新文件,但不包括被刪除的文件趁俊。也就是說只添加修改域仇,不刪除已a(bǔ)dd文件。
- `git add -u` 剛好相反则酝,僅監(jiān)控已a(bǔ)dd文件殉簸,不會提交新文件。
- `git add -A` 集合上述兩者功能沽讹,為 `git add --all` 縮寫般卑。
- 命令 `git commit -m` 將暫存區(qū)文件提交至倉庫
注:-m 后接提交說明,為方便知悉版本更迭及修改情況爽雄,不可省略蝠检!
-
** 與GitHub關(guān)聯(lián) **
- 創(chuàng)建本地SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
,后面換成自己的郵箱挚瘟,然后一路回車叹谁。打開.ssh文件夾下的id_rsa.pub
,一般路徑為C:\Users\Administrator\.ssh
乘盖。注意不要用系統(tǒng)筆記本打開編輯文本文件焰檩,可以用sublime text打開,復(fù)制订框。 - 關(guān)聯(lián)SSH Key:
登錄GitHub析苫,點(diǎn)擊右上角頭像邊的下拉三角,打開Settings穿扳,SSH and GPG keys頁面衩侥。然后,點(diǎn)"New SSH Key",填寫標(biāo)題,將復(fù)制的SSH粘貼進(jìn)去刚盈,點(diǎn)擊提交。
如果有多臺設(shè)備弧腥,需各在不同設(shè)備上添加關(guān)聯(lián)SSH驻龟。 - 配置本地用戶和郵箱
git config --global user.name "userName" //設(shè)置用戶名 git config --global user.email "email" //設(shè)置郵箱
- 創(chuàng)建本地SSH Key:
-
** 從本地添加到遠(yuǎn)程庫 **
在本地創(chuàng)建Git倉庫后看杭,可將本地倉庫內(nèi)容提交至GitHub倉庫慨绳。- 首先骨杂,在GitHub上創(chuàng)建新的倉庫涂身,輸入倉庫名,與本地倉庫統(tǒng)一搓蚪。點(diǎn)進(jìn)新建好的倉庫,點(diǎn)擊
Clone or download
按鈕丁鹉,復(fù)制SSH妒潭。 - 然后,在本地倉庫下輸入以下命令揣钦,這里需右鍵倉庫文件夾選擇
Git Bash Here
$ git remote add origin XXX
將XXX替換成剛才復(fù)制的SSH雳灾,回車。遠(yuǎn)程庫的名字默認(rèn)為origin
- 最后冯凹,把本地庫的所有內(nèi)容推送到遠(yuǎn)程庫上谎亩,用
git push
命令:
$ git push -u origin master
由于遠(yuǎn)程庫是空的,第一次推送master分支時(shí)宇姚,須加上-u參數(shù)匈庭,Git不但會把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支,還會把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來浑劳,在以后的推送或者拉取時(shí)就可以簡化命令阱持。
以后,只要本地作了提交魔熏,就可以通過命令$ git push origin master
提交衷咽。
- 首先骨杂,在GitHub上創(chuàng)建新的倉庫涂身,輸入倉庫名,與本地倉庫統(tǒng)一搓蚪。點(diǎn)進(jìn)新建好的倉庫,點(diǎn)擊
-
** 從遠(yuǎn)程庫克隆到本地 **
一般從零開發(fā)先創(chuàng)建遠(yuǎn)程庫,然后從遠(yuǎn)程庫克隆到本地- 首先蒜绽,一樣在GitHub創(chuàng)建新倉庫镶骗,記得勾選
Initialize this repository with a README
,這樣GitHub會自動為我們創(chuàng)建一個(gè)README.md文件躲雅。創(chuàng)建完畢后鼎姊,就可以看到README.md文件,可以在此文件中編輯項(xiàng)目信息吏夯。 - 然后在本地文件庫打開Git bush此蜈,輸入命令
$ git clone XXX
,XXX換成自己的SSH地址噪生。
- 首先蒜绽,一樣在GitHub創(chuàng)建新倉庫镶骗,記得勾選
-
常用命令
摘錄Git常用命令:
Git命令參考手冊
git init # 初始化本地git倉庫(創(chuàng)建新倉庫)
git config --global user.name "xxx" # 配置用戶名
git config --global user.email "xxx@xxx.com" # 配置郵件
git config --global color.ui true # git status等命令自動著色
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
git clone git+ssh://git@192.168.53.168/VT.git # clone遠(yuǎn)程倉庫
git status # 查看當(dāng)前版本狀態(tài)(是否修改)
git add xyz # 添加xyz文件至index
git add . # 增加當(dāng)前子目錄下所有更改過的文件至index
git commit -m 'xxx' # 提交
git commit --amend -m 'xxx' # 合并上一次提交(用于反復(fù)修改)
git commit -am 'xxx' # 將add和commit合為一步
git rm xxx # 刪除index中的文件
git rm -r * # 遞歸刪除
git log # 顯示提交日志
git log -1 # 顯示1行日志 -n為n行
git log -5git log --stat # 顯示提交日志及相關(guān)變動文件
git log -p -m git show dfb02e6e4f2f7b573337763e5c0013802e392818 # 顯示某個(gè)提交的詳細(xì)內(nèi)容
git show dfb02 # 可只用commitid的前幾位
git show HEAD # 顯示HEAD提交日志
git show HEAD^ # 顯示HEAD的父(上一個(gè)版本)的提交日志 ^^為上兩個(gè)版本 ^5為上5個(gè)版本
git tag # 顯示已存在的tag
git tag -a v2.0 -m 'xxx' # 增加v2.0的tag
git show v2.0 # 顯示v2.0的日志及詳細(xì)內(nèi)容
git log v2.0 # 顯示v2.0的日志
git diff # 顯示所有未添加至index的變更
git diff --cached # 顯示所有已添加index但還未commit的變更
git diff HEAD^ # 比較與上一個(gè)版本的差異
git diff HEAD -- ./lib # 比較與HEAD版本lib目錄的差異
git diff origin/master..master # 比較遠(yuǎn)程分支master上有本地分支master上沒有的
git diff origin/master..master --stat # 只顯示差異的文件裆赵,不顯示具體內(nèi)容
git remote add origin git+ssh://git@192.168.53.168/VT.git # 增加遠(yuǎn)程定義(用于push/pull/fetch)
git branch # 顯示本地分支
git branch --contains 50089 # 顯示包含提交50089的分支
git branch -a # 顯示所有分支
git branch -r # 顯示所有原創(chuàng)分支
git branch --merged # 顯示所有已合并到當(dāng)前分支的分支
git branch --no-merged # 顯示所有未合并到當(dāng)前分支的分支
git branch -m master master_copy # 本地分支改名
git checkout -b master_copy # 從當(dāng)前分支創(chuàng)建新分支master_copy并檢出
git checkout -b master master_copy # 上面的完整版
git checkout features/performance # 檢出已存在的features/performance分支
git checkout --track hotfixes/BJVEP933 # 檢出遠(yuǎn)程分支hotfixes/BJVEP933并創(chuàng)建本地跟蹤分支
git checkout v2.0 # 檢出版本v2.0
git checkout -b devel origin/develop # 從遠(yuǎn)程分支develop創(chuàng)建新本地分支devel并檢出
git checkout -- README # 檢出head版本的README文件(可用于修改錯誤回退)
git merge origin/master # 合并遠(yuǎn)程master分支至當(dāng)前分支
git cherry-pick ff44785404a8e # 合并提交ff44785404a8e的修改
git push origin master # 將當(dāng)前分支push到遠(yuǎn)程master分支
git push origin :hotfixes/BJVEP933 # 刪除遠(yuǎn)程倉庫的hotfixes/BJVEP933分支
git push --tags # 把所有tag推送到遠(yuǎn)程倉庫
git fetch # 獲取所有遠(yuǎn)程分支(不更新本地分支,另需merge)
git fetch --prune # 獲取所有原創(chuàng)分支并清除服務(wù)器上已刪掉的分支
git pull origin master # 獲取遠(yuǎn)程分支master并merge到當(dāng)前分支
git mv README README2 # 重命名文件README為README2
git reset --hard HEAD # 將當(dāng)前版本重置為HEAD(通常用于merge失敗回退)
git rebase git branch -d hotfixes/BJVEP933 # 刪除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)
git branch -D hotfixes/BJVEP933 # 強(qiáng)制刪除分支hotfixes/BJVEP933
git ls-files # 列出git index包含的文件
git show-branch # 圖示當(dāng)前分支歷史
git show-branch --all # 圖示所有分支歷史
git whatchanged # 顯示提交歷史對應(yīng)的文件修改
git revert dfb02e6e4f2f7b573337763e5c0013802e392818 # 撤銷提交dfb02e6e4f2f7b573337763e5c0013802e392818
git ls-tree HEAD # 內(nèi)部命令:顯示某個(gè)git對象
git rev-parse v2.0 # 內(nèi)部命令:顯示某個(gè)ref對于的SHA1 HASH
git reflog # 顯示所有提交跺嗽,包括孤立節(jié)點(diǎn)
git show HEAD@{5} git show master@{yesterday} # 顯示master分支昨天的狀態(tài)
git log --pretty=format:'%h %s' --graph # 圖示提交日志
git show HEAD~3git show -s --pretty=raw 2be7fcb476 git stash # 暫存當(dāng)前修改战授,將所有至為HEAD狀態(tài)
git stash list # 查看所有暫存
git stash show -p stash@{0} # 參考第一次暫存
git stash apply stash@{0} # 應(yīng)用第一次暫存
git grep "delete from" # 文件中搜索文本“delete from”
git grep -e '#define' --and -e SORT_DIRENT git gc git fsck
- ### 一些問題 ###
- 文件或文件夾重命名:
直接在本地重命名后页藻,輸入命令 `git add -A` ,然后 commit 并 push 遠(yuǎn)程庫植兰,完成后遠(yuǎn)程庫文件或文件夾名便已更改份帐。