安裝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 | 查看庫文件當前狀態(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的操作, 此時會刪除最后一條記錄并產(chǎn)生新的一條記錄 (commit id 不同),注意要先將改動的文件add到staged狀態(tài) | |
log | $ git log | 查看庫的操作日志 |
$ git log --oneline | 查看庫的操作關(guān)鍵信息,每個 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 會清除 7cd4e4e 之后的所有操作提交 | |
$ git reset --soft commitId | 回到 commit 之前(回滾): soft 會保留 7cd4e4e 之后的所有操作 | |
reflog | $ git reflog | 查看所有 HEAD 的改動,配合 reset --hard 的可恢復(fù)之前的刪除操作 |
checkout | $ git checkout dev1.0 | 切換分支/tag |
$ git checkout -b dev1.0 | 創(chuàng)建并切換本地分支 | |
$ git checkout -b dev1.1 origin/dev1.1 | 將遠程分支添加到本地 | |
$ git checkout commitId -- fileName | 讓文件回滾到某一次 commit | |
branch | $ git branch | 查看當前分支 |
$ 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 | 拉取遠程版本庫到本地版本庫(需要再次merge) |
pull | $ git pull origin dev1.0 | 拉取遠程版本庫到本地版本庫,并將其merge到本地項目中 |
push | $ git push -u origin dev1.0 | 推送本地版本庫到遠程版本庫 |
$ git push origin :branch-name | 刪除遠程分支或tag | |
$ git push origin branch-name1:branch-name2 | 替換遠程分支 | |
remote | $ git remote add origin remoteAddress | 添加并鏈接到遠程庫 |
$ git remote rm origin | 刪除遠程庫 | |
tag | $ git tag | 查看標簽 |
$ git tag v1.0.0 -light | 創(chuàng)建輕量標簽 | |
$ git tag -a v1.0.0 -m "release 0.1.0 version" | -a即annotated的縮寫,指定標簽類型,后附標簽名 | |
$ git push origin v1.0.0 | 發(fā)布標簽,提交到git服務(wù)器 | |
$ git push origin –tags | 將本地所有標簽一次性提交到git服務(wù)器 | |
$ git tag -d v1.0.0 | 刪除標簽 | |
$ git checkout tagname | 切換標簽 | |
$ git tag -a v1.0.0 commitId | 補打標簽 |
init
進入相關(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
查看庫文件當前狀態(tài)
$ git status
commit
將處于stage狀態(tài)的文件提交到本地庫中
$ git commit -m "填寫相關(guān)描述信息"
合并add操作,一步到位
$ git commit -am "填寫相關(guān)描述信息"
追加已經(jīng)commit的操作, 此時會刪除最后一條記錄并產(chǎn)生新的一條記錄 (commit id 不同),注意要先將改動的文件add到staged狀態(tài)
$ git commit --amend --no-edit
log
查看庫的操作日志
$ git log
查看庫的操作關(guān)鍵信息,每個 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 會清除 7cd4e4e 之后的所有操作提交
$ git reset --hard <commit id>
回到 commit 之前(回滾): soft 會保留 7cd4e4e 之后的所有操作
$ git reset --soft <commit id>
reflog
查看所有 HEAD 的改動,配合 reset --hard 的可恢復(fù)之前的刪除操作
$ git reflog
checkout
讓文件回滾到某一次 commit
$ git checkout <commit id> -- <file>
切換分支
$ git checkout dev1.0
創(chuàng)建并切換分支
$ git checkout -b dev1.0
branch
查看當前分支
$ 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
拉取遠程版本庫到本地版本庫(需要再次merge)
$ git fetch origin dev1.0
pull
拉取遠程版本庫到本地版本庫,并將其merge到本地項目中
$ git pull origin dev1.0
push
推送本地版本庫到遠程版本庫
$ 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àn)如下圖樣式
出現(xiàn)fatal: remote origin already exists.錯誤
如果鏈接本地版本庫出現(xiàn)上面錯誤,嘗試刪除重試
$ git remote rm origin
pull時候出現(xiàn)fatal: refusing to merge unrelated histories
因為網(wǎng)上和本地的是不同的兩個倉庫,(網(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
添加遠程分支到本地分支
$ 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到遠程庫中
5、打上tag,release該版本
6、1-5循環(huán)