GIT常用命令(小結(jié))
- 談及源碼管理工具秉氧,首選
SVN
和GIT
,在工作中也都有所接觸蜒秤,但個(gè)人更喜歡使用GIT谬运,下面就是我記錄的在工作中用到的操作命令。
操作流程圖
一垦藏、全局配置
-
告訴git你是誰(shuí)(設(shè)置 | 修改 用戶名)
git config --global user.name "username"
-
告訴git怎么聯(lián)系你(如果注冊(cè)了 github 賬號(hào)梆暖,郵箱最好和 github 賬號(hào)統(tǒng)一)(設(shè)置 | 修改 郵箱)
git config --global user.email "xxx@126.com"
-
查看用戶名和郵箱
git config user.name
git config user.email
二、初始化本地代碼倉(cāng)庫(kù)
-
初始化代碼倉(cāng)庫(kù)
git init
進(jìn)入新的公司掂骏,一般都需要從公司的遠(yuǎn)程代碼托管倉(cāng)庫(kù)中
clone
出一份代碼 -
從服務(wù)器分支中創(chuàng)建本地分支
a. 加入我在本地新建了一個(gè)分支
git checkout origin/originBranchName -b localBranchName
b. 我在這個(gè)分支上新建了一些文件轰驳,要把這個(gè)分支推送到自己的遠(yuǎn)程分支服務(wù)器上
git push origin localBranchName
-
從服務(wù)器克隆代碼(有子模塊,需要遞歸recursive)
git clone --recursive git@git.jimubox.com:xxx/xxxxxx.git
三弟灼、修改&提交
-
添加修改的文件
git add MainView.h
(添加某個(gè)文件)git add .
(添加所有已經(jīng)修改的文件) -
提交修改
git commit -m "注釋"
git commit -a -m "注釋"
git commit -am "注釋"
-
從遠(yuǎn)程分支中拉最新代碼
git pull origin originBranchName
-
將本地分支代碼提交到自己的遠(yuǎn)程分支中
git push origin localBranchName
-
切換到服務(wù)器遠(yuǎn)程分支上
git checkout originBranchName
-
合并分支(遠(yuǎn)程分支&本地分支做個(gè)合并)
git merge localBranchName
-
把最新修改同步到服務(wù)器的遠(yuǎn)程分支上
git push origin localBranchName
-
切換到自己的本地分支级解,完成一次修改提交操作
git checkout localBranchName
備注: 修改&提交時(shí),Untracked files(未監(jiān)視的文件)的處理
有時(shí)候會(huì)出現(xiàn)Untracked files田绑,我們又不想add到倉(cāng)庫(kù)勤哗,但是使用
git checkout .
和git reset
都沒法刪除這些未監(jiān)視的文件,如下圖:
- 解決辦法:
- 刪除文件:
git clean -f
- 刪除目錄:
git clean -fd
- 刪除文件:
- Tips
- 刪除前掩驱,建議加上-n參數(shù)芒划,先看看會(huì)對(duì)哪些文件產(chǎn)生影響,避免誤操作欧穴!比如:
git clean -nf
民逼、git clean -nfd
- 刪除前掩驱,建議加上-n參數(shù)芒划,先看看會(huì)對(duì)哪些文件產(chǎn)生影響,避免誤操作欧穴!比如:
四、版本回撤
-
回撤到上一個(gè)版本
git reset --hard HEAD^
-
回撤到上上一個(gè)版本
git reset --hard HEAD^^
-
切換到任意版本
git reset --hard 版本號(hào)(前6位)
-
撤銷某一個(gè)文件當(dāng)前的修改
git checkout 文件名
-
撤銷當(dāng)前所有修改
git checkout .
-
查看分支引用記錄涮帘,能夠查閱所有的版本號(hào)
git reflog
-
從分支的某個(gè)提交記錄簽出新的分支
git checkout 版本號(hào)(前6位)
git branch 新的分支名【產(chǎn)生新的分支】
五拼苍、查看文件修改記錄
-
查看當(dāng)前分支
git branch
-
查詢某人的提交記錄
git log --author="姓名"
-
查看文件修改記錄(歷史) 文件追蹤,再也不怕未知的修改了调缨,呵呵
git blame VideoSquare/HotViewController.mm
-
查看文件修改內(nèi)容
git difftool VideoSquare/HotViewController.mm
新窗口彈出git diff VideoSquare/HotViewController.mm
原始窗口顯示
六疮鲫、分支操作
-
查看當(dāng)前分支
git branch
-
查看遠(yuǎn)程分支
git branch -r
-
創(chuàng)建本地分支(注意不會(huì)自動(dòng)切換分支)
git branch [name]
-
切換分支
git checkout [name]
-
創(chuàng)建新分支并立即切換到新分支
git checkout -b [name]
-
刪除分支
a. 只能刪除已經(jīng)合并過的分支 b. 沒有合并的分支不能刪除 c. 如果要強(qiáng)行刪除分支,可以使用 -D 選項(xiàng)
git branch -d [name]
git push origin --delete <branchName>
刪除遠(yuǎn)程分支
6.1 刪除本地的無(wú)效遠(yuǎn)程分支
git remote prune origin
// 輸出日志如下:
Pruning origin
URL: git@git.jimubox.com:app-labs/app-background-center.git
* [pruned] origin/develop_new
-
合并分支
git merge [name]
-
創(chuàng)建遠(yuǎn)程分支(本質(zhì)上是將本地的分支 push 到遠(yuǎn)程)
git push origin [name]
七弦叶、遠(yuǎn)程操作
-
查看當(dāng)前分支
git clone url
-
將本地修改內(nèi)容推送到遠(yuǎn)程代碼倉(cāng)庫(kù)
git push
-
將遠(yuǎn)程代碼庫(kù)的變化更新到本地
git pull
八俊犯、標(biāo)簽
-
創(chuàng)建標(biāo)簽
git tag 標(biāo)簽名稱
git tag -a 標(biāo)簽名稱 -m 附注
-
在指定commit上打標(biāo)簽
git tag -a 標(biāo)簽名稱 commitCode -m 附注
-
查看標(biāo)簽列表
git tag
-
查看標(biāo)簽信息
git show 標(biāo)簽名稱
-
刪除標(biāo)簽
git tag -d 標(biāo)簽名稱
-
推送標(biāo)簽到遠(yuǎn)程
git push origin 標(biāo)簽名稱
git push origin --tags
推送到遠(yuǎn)程的標(biāo)簽,如果想要?jiǎng)h除遠(yuǎn)程標(biāo)簽湾蔓,就得先刪除本地(git tag -d 分支名稱)瘫析,再刪除遠(yuǎn)程標(biāo)簽(git push origin :refs/tags/標(biāo)簽名稱)
九、其它
-
刪除文件
git rm -r 文件名稱
-
.gitignore規(guī)則不生效的解決辦法
# 手動(dòng)修改gitignore文件,添加新的忽略規(guī)則失效的原因是贬循,.gitignore只能忽略那些原來(lái)沒有被track的文件咸包,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無(wú)效的杖虾。那么解決方法就是先把本地緩存刪除(改變成未track狀態(tài))烂瘫,然后再提交: git rm -r --cached . git add . git commit -m 'update .gitignore'
十、高級(jí)用法
十一奇适、附件
- 好用的終端+常用命令坟比,會(huì)達(dá)到事半功倍的效果,點(diǎn)擊快速配置Mac的終端