安裝Git
MAC下使用HomeBrew安裝
如果沒有HomeBrew,在終端輸入以下命令嘗試安裝:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
利用brew安裝版本的Git
$ brew install git
Git 相關(guān)命令
命令 | 相關(guān)操作 | 解釋 |
---|---|---|
init | $ git init | 創(chuàng)建本地版本庫 |
config | $ git config --global user.name "yourName" | 配置name信息 |
$ git config --global user.email "yourEmail" | 配置郵箱信息 | |
add | $ git add fileName | 添加文件到staged狀態(tài) |
$ git add . | 添加所有文件到staged狀態(tài) | |
status | $ git status | 查看庫文件當(dāng)前狀態(tài) |
commit | git commit -m "填寫相關(guān)描述信息" | 將處于stage狀態(tài)的文件提交到本地庫中 |
$ git commit -am "填寫相關(guān)描述信息" | 合并add操作划咐,一步到位 | |
$ git commit --amend --no-edit | 追加已經(jīng)commit的操作谚鄙, 此時(shí)會(huì)刪除最后一條記錄并產(chǎn)生新的一條記錄 (commit id 不同),注意要先將改動(dòng)的文件add到staged狀態(tài) | |
log | $ git log | 查看庫的操作日志 |
$ git log --oneline | 查看庫的操作關(guān)鍵信息蛮位,每個(gè) commit 內(nèi)容顯示在一行 | |
$ git log --oneline --graph | 查看庫的操作關(guān)鍵信息沪编,包括分支信息 | |
diff | $ git diff | 查看unstaged狀態(tài)的文件 |
$ git diff --cached | 查看 staged狀態(tài)的文件(add過的文件) | |
$ git diff HEAD | 查看 staged & unstaged (HEAD) | |
reset | $ git reset fileName | 回到add之前狀態(tài)(unstaged) |
$ git reset --hard HEAD | 查看上次 commit 的HEAD指針指向的id | |
$ git reset --hard commitId | 回到 commit 之前(回滾): hard 會(huì)清除 7cd4e4e 之后的所有操作提交 | |
$ git reset --soft commitId | 回到 commit 之前(回滾): soft 會(huì)保留 7cd4e4e 之后的所有操作 | |
reflog | $ git reflog | 查看所有 HEAD 的改動(dòng)贫途,配合 reset --hard 的可恢復(fù)之前的刪除操作 |
checkout | $ git checkout dev1.0 | 切換分支/tag |
$ git checkout -b dev1.0 | 創(chuàng)建并切換本地分支 | |
$ git checkout -b dev1.1 origin/dev1.1 | 將遠(yuǎn)程分支添加到本地 | |
$ git checkout commitId -- fileName | 讓文件回滾到某一次 commit | |
branch | $ git branch | 查看當(dāng)前分支 |
$ git branch -a | 查看全部分支 | |
$ git branch dev1.0 | 創(chuàng)建分支 | |
merge | $ git merge dev1.0 | 合并分支 |
$ git branch -d dev1.1 | 刪除本地分支 | |
$ git merge --no-ff -m "相關(guān)描述信息" dev1.0 | 合并分支擂达,保留分支上commit信息 | |
stash | $ git stash | 暫存修改 |
$ git stash list | 查看 stash 中的暫存任務(wù) | |
$ git stash pop | 繼續(xù)暫存任務(wù) | |
fetch | $ git fetch origin dev1.0 | 拉取遠(yuǎn)程版本庫到本地版本庫(需要再次merge) |
pull | $ git pull origin dev1.0 | 拉取遠(yuǎn)程版本庫到本地版本庫绢淀,并將其merge到本地項(xiàng)目中 |
push | $ git push -u origin dev1.0 | 推送本地版本庫到遠(yuǎn)程版本庫 |
$ git push origin :branch-name | 刪除遠(yuǎn)程分支或tag | |
$ git push origin branch-name1:branch-name2 | 替換遠(yuǎn)程分支 | |
remote | $ git remote add origin remoteAddress | 添加并鏈接到遠(yuǎn)程庫 |
$ git remote rm origin | 刪除遠(yuǎn)程庫 | |
tag | $ git tag | 查看標(biāo)簽 |
$ git tag v1.0.0 -light | 創(chuàng)建輕量標(biāo)簽 | |
$ git tag -a v1.0.0 -m "release 0.1.0 version" | -a即annotated的縮寫萤悴,指定標(biāo)簽類型,后附標(biāo)簽名 | |
$ git push origin v1.0.0 | 發(fā)布標(biāo)簽皆的,提交到git服務(wù)器 | |
$ git push origin –tags | 將本地所有標(biāo)簽一次性提交到git服務(wù)器 | |
$ git tag -d v1.0.0 | 刪除標(biāo)簽 | |
$ git checkout tagname | 切換標(biāo)簽 | |
$ git tag -a v1.0.0 commitId | 補(bǔ)打標(biāo)簽 |
init
進(jìn)入相關(guān)文件夾創(chuàng)建本地版本庫
$ git init
config
配置相關(guān)信息
$ git config --global user.name "yourName
$ git config --global user.email "yourEmail"
add
添加文件到staged狀態(tài)
$ git add <file>
添加所有文件到staged狀態(tài)
$ git add .
status
查看庫文件當(dāng)前狀態(tài)
$ git status
commit
將處于stage狀態(tài)的文件提交到本地庫中
$ git commit -m "填寫相關(guān)描述信息"
合并add操作覆履,一步到位
$ git commit -am "填寫相關(guān)描述信息"
追加已經(jīng)commit的操作, 此時(shí)會(huì)刪除最后一條記錄并產(chǎn)生新的一條記錄 (commit id 不同),注意要先將改動(dòng)的文件add到staged狀態(tài)
$ git commit --amend --no-edit
log
查看庫的操作日志
$ git log
查看庫的操作關(guān)鍵信息祭务,每個(gè) commit 內(nèi)容顯示在一行
$ git log --oneline
查看庫的操作關(guān)鍵信息内狗,包括分支信息
$ git log --oneline --graph
diff
查看unstaged狀態(tài)的文件
$ git diff
查看 staged狀態(tài)的文件(add過的文件)
$ git diff --cached
查看 staged & unstaged (HEAD)
$ git diff HEAD
reset
回到add之前狀態(tài)(unstaged)
$ git reset <file>
查看上次 commit 的HEAD指針指向的id
$ git reset --hard HEAD
回到 commit 之前(回滾): hard 會(huì)清除 7cd4e4e 之后的所有操作提交
$ git reset --hard <commit id>
回到 commit 之前(回滾): soft 會(huì)保留 7cd4e4e 之后的所有操作
$ git reset --soft <commit id>
reflog
查看所有 HEAD 的改動(dòng),配合 reset --hard 的可恢復(fù)之前的刪除操作
$ git reflog
checkout
讓文件回滾到某一次 commit
$ git checkout <commit id> -- <file>
切換分支
$ git checkout dev1.0
創(chuàng)建并切換分支
$ git checkout -b dev1.0
branch
查看當(dāng)前分支
$ git branch
$ git branch -a #查看全部分支
創(chuàng)建分支
$ git branch dev1.0
merge
合并分支
$ git merge dev1.0
合并分支义锥,保留分支上commit信息
$ git merge --no-ff -m "相關(guān)描述信息" dev1.0
stash
暫存修改
$ git stash
查看 stash 中的暫存任務(wù)
$ git stash list
繼續(xù)暫存任務(wù)
$ git stash pop
fetch
拉取遠(yuǎn)程版本庫到本地版本庫(需要再次merge)
$ git fetch origin dev1.0
pull
拉取遠(yuǎn)程版本庫到本地版本庫柳沙,并將其merge到本地項(xiàng)目中
$ git pull origin dev1.0
push
推送本地版本庫到遠(yuǎn)程版本庫
$ git push -u origin dev1.0
常見問題
解決merge沖突
<<<<<<< HEAD
# edited in master
=======
# edited in dev
>>>>>>> dev
刪除"<<<<","====",">>>>"中問題code,重新提交
$ git commit -am "解決xxx沖突"
鏈接本地版本庫拌倍,并將分支 push 推送到Git上
$ git remote add origin git@github.com:LOLITA0164/PhotoBrowser.git
$ git push -u origin master # 推送本地 master 去 origin
$ git push -u origin dev # 推送本地 dev 去 origin
注意事項(xiàng):
正確姿勢(shì)出現(xiàn)如下圖樣式
出現(xiàn)fatal: remote origin already exists.錯(cuò)誤
如果鏈接本地版本庫出現(xiàn)上面錯(cuò)誤赂鲤,嘗試刪除重試
$ git remote rm origin
pull時(shí)候出現(xiàn)fatal: refusing to merge unrelated histories
因?yàn)榫W(wǎng)上和本地的是不同的兩個(gè)倉庫噪径,(網(wǎng)上的已經(jīng)初始化過了,這種情況通常是clone下來再開發(fā))如果需要合并数初,輸入以下命令嘗試
git pull origin <分支如master> --allow-unrelated-histories
Clone 克隆Git上的版本庫
git clone sourceAddress destinationAddress
如:
git clone git@github.com:LOLITA0164/PhotoBrowser.git ~/Desktop/PhotoBrowser
添加遠(yuǎn)程分支到本地分支
$ git checkout -b dev1.1 origin/dev1.1
刪除本地分支
$ git branch -d dev1.1
過程
...
1找爱、拉取最新需要開發(fā)的分支到本地(fetch、merge)
2泡孩、開發(fā)功能车摄,push前,再次拉取最新code
3仑鸥、1-2循環(huán)
4吮播、版本完成,merge到master分支眼俊,將該版本push到遠(yuǎn)程庫中
5意狠、打上tag,release該版本
6疮胖、1-5循環(huán)