在 CocoaPods 創(chuàng)建自己的公開(kāi)庫(kù)和私有庫(kù)時(shí),我們會(huì)經(jīng)常使用到 git 和 pod 命令,以下是我創(chuàng)建公開(kāi)庫(kù)和私有庫(kù)過(guò)程中常用到的一些命令,希望這些能夠幫助到您。
git 命令
mkdir xx #創(chuàng)建一個(gè)空目錄,xx指目錄名
pwd #顯示當(dāng)前目錄的路徑。
cat xx #查看xx文件內(nèi)容
git --help #幫助命令
# git global setup
git config --global user.name "xiaoming" #全局用于提交顯示的名字
git config --global user.email "xiaoming@163.com" #全局用于提交顯示的郵箱地址
git config user.name "xiaoming" #當(dāng)前項(xiàng)目用于提交顯示名字
git config user.email "xiaoming@163.com" #當(dāng)前項(xiàng)目用于提交顯示的郵箱地址
git init #把當(dāng)前的目錄變成可以管理的git倉(cāng)庫(kù),生成隱藏.git文件
git status #查看倉(cāng)庫(kù)狀態(tài)
git add . #他會(huì)監(jiān)控工作區(qū)的狀態(tài)樹(shù),使用它會(huì)把工作時(shí)的所有變化提交到暫存區(qū),包括文件內(nèi)容修改(modified)、被刪除的文件以及新文件(new)。
git add -u #他僅監(jiān)控已經(jīng)被add的文件(即tracked file),他會(huì)將被修改的文件提交到暫存區(qū)。add -u 不會(huì)提交新文件 (untracked file)。(git add --update的縮寫(xiě))
git add -A #上面兩個(gè)功能的合集(git add --all的縮寫(xiě))
git commit -m "描述" #從暫存區(qū)提交代碼到遠(yuǎn)程庫(kù)
git commit --amend #修改最后一次提交信息,進(jìn)入對(duì)最后一次提交信息編輯的vim編輯器界面(普通模式下,按i進(jìn)入編輯模式,編輯模式下按esc退出到普通模式,普通模式下按:進(jìn)入命令模式,輸入wq即可保存修改并退出vim編輯器)
git commit --amend -m 'new commit message' #如果簡(jiǎn)單地修改提交信息也可以直接通過(guò)如下命令行完成
git push origin master #把master分支推送到遠(yuǎn)程庫(kù)對(duì)應(yīng)的遠(yuǎn)程分支上
git push -u origin master -f #強(qiáng)制提交
git push origin --delete xx #刪除遠(yuǎn)程分支xx
git tag -a '1.0.1' -m '描述' #添加版本為1.0.1的tag
git tag #查看tag
git push --tags #將本地創(chuàng)建的tag推到遠(yuǎn)程庫(kù)
git tag -d '1.0.1' #刪除版本為1.0.1的tag
git push origin :1.0.1 #從遠(yuǎn)程庫(kù)刪除版本為1.0.1的tag
git remote set-url origin https://token@github.com/chenxing640/xxx.git/ #設(shè)置用token提交
git remote #不帶參數(shù),列出已經(jīng)存在的遠(yuǎn)程分支
git remote -v #列出詳細(xì)信息,在每一個(gè)名字后面列出其遠(yuǎn)程url,-v 選項(xiàng)(譯注: 此為 -verbose 的簡(jiǎn)寫(xiě),取首字母)。
git remote add [shortname] [url] # 添加一個(gè)新的遠(yuǎn)程倉(cāng)庫(kù),可以指定一個(gè)簡(jiǎn)單的名字,以便將來(lái)引用。
git remote add origin2 git@github.com:tianqixin/runoob-git-test.git #添加倉(cāng)庫(kù)origin2
git remote rm [別名] #刪除遠(yuǎn)程倉(cāng)庫(kù)你可以使用命令
git remote rm origin2 #刪除倉(cāng)庫(kù)origin2
git clone https://github.com/chenxing640/DYFToast.git #從遠(yuǎn)程庫(kù)中克隆
git clone https://github.com/chenxing640/DYFToast.git Toast #從遠(yuǎn)程庫(kù)中克隆到指定的目錄 (Toast)
git log #查看歷史記錄
git reflog #查看歷史記錄的版本號(hào)id
git diff xx #查看xx文件修改了那些內(nèi)容
git rm --cached -r .idea/ #將.idea/目錄下所有文件從緩存中刪除,不刪除物理文件
git rm --f .idea/ #將.idea/目錄下所有文件從緩存中刪除,還會(huì)刪除物理文件
1. 刪除遠(yuǎn)程文件,本地保留
git rm --cached useless.log
git commit -m "remove file from remote repository"
git push
2. 刪除遠(yuǎn)程useless文件夾,本地保留(刪除文件夾要使用-r參數(shù))
git rm --cached -r useless
git commit -m "remove directory from remote repository"
git push
git branch name #創(chuàng)建分支
git branch #列出分支
git branch -l #列出分支list
git branch -a #列出所有分支
git branch –d dev #刪除dev分支
git branch –D dev #強(qiáng)制刪除dev分支
git branch -m oldBranchName newBranchName #修改本地分支名稱(chēng)
git push origin :oldBranchName #將本地分支的遠(yuǎn)程分支刪除
git push --set-upstream remote newBranchName #將改名后的本地分支推送到遠(yuǎn)程,并將本地分支與之關(guān)聯(lián)
git checkout master #切換回master分支
git checkout –b dev #創(chuàng)建新分支并立即切換到該分支下,然后使用`git push origin dev`提交遠(yuǎn)程分支
#未使用 git add 緩存代碼,用來(lái)放棄掉所有還沒(méi)有加入到緩存區(qū)的修改
git checkout -- filepathname #放棄單個(gè)文件修改,注意不要忘記中間的"--",不寫(xiě)就成了檢出分支了
git checkout . #放棄所有的文件修改
git checkout master #選擇或切換到master分支
git merge dev #將dev分支合并到當(dāng)前分支(master)中
# Git 有兩個(gè)命令用來(lái)提取遠(yuǎn)程倉(cāng)庫(kù)的更新。
git fetch <遠(yuǎn)程主機(jī)名> #將某個(gè)遠(yuǎn)程主機(jī)的更新全部取回本地
git fetch <遠(yuǎn)程主機(jī)名> <分支名> #如果只想取回特定分支的更新,可以指定分支名
git fetch origin master #取回origin主機(jī)的master分支
git merge hotfix #從遠(yuǎn)端倉(cāng)庫(kù)提取數(shù)據(jù)并嘗試合并到當(dāng)前hotfix分支
git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名> #將遠(yuǎn)程主機(jī)的某個(gè)分支的更新取回,并與本地指定的分支合并
git pull origin next #如果遠(yuǎn)程分支是與當(dāng)前分支合并,則冒號(hào)后面的部分可以省略
#開(kāi)發(fā)分支(dev)上的代碼達(dá)到上線的標(biāo)準(zhǔn)后,要合并到 master 分支
git checkout dev
git pull origin dev
git checkout master
git merge dev
git push origin master
#當(dāng) master 代碼改動(dòng)了,需要更新開(kāi)發(fā)分支(dev)上的代碼
git checkout master
git pull origin master
git checkout dev
git merge master
git push origin dev
#已經(jīng)使用 git add 緩存了代碼,用來(lái)清除 git 對(duì)于文件修改的緩存
git reset HEAD filepathname # (比如:git reset HEAD readme.md) 來(lái)放棄指定文件的緩存
git reset HEAD . #放棄所有的緩存
#已經(jīng)用 git commit 提交了代碼,
git reset --hard HEAD^ #回退到上一個(gè)版本 (即回退到上一次commit的狀態(tài))
git reset --hard HEAD^^ #回退到上上一個(gè)版本 (如果想回退到往上100個(gè)版本,使用git reset –hard HEAD~100 )
git reset --hard commitid #用來(lái)回退到任意版本,使用 git log 命令來(lái)查看git的提交歷史。git log 的輸出可以看到第一行就是 commitid
git stash #保存當(dāng)前工作進(jìn)度,將工作區(qū)和暫存區(qū)恢復(fù)到修改之前
git stash save message #作用同上,message為此次進(jìn)度保存的說(shuō)明
git stash list #顯示保存的工作進(jìn)度列表,編號(hào)越小代表保存進(jìn)度的時(shí)間越近
git stash pop stash@{num} #恢復(fù)工作進(jìn)度到工作區(qū),此命令的stash@{num}是可選項(xiàng),在多個(gè)工作進(jìn)度中可以選擇恢復(fù),不帶此項(xiàng)則默認(rèn)恢復(fù)最近的一次進(jìn)度相當(dāng)于git stash pop stash@{0}
git stash apply stash@{num} #恢復(fù)工作進(jìn)度到工作區(qū)且該工作進(jìn)度可重復(fù)恢復(fù),此命令的stash@{num}是可選項(xiàng),在多個(gè)工作進(jìn)度中可以選擇恢復(fù),不帶此項(xiàng)則默認(rèn)恢復(fù)最近的一次進(jìn)度相當(dāng)于git stash apply stash@{0}
git stash drop stash@{num} #刪除一條保存的工作進(jìn)度,此命令的stash@{num}是可選項(xiàng),在多個(gè)工作進(jìn)度中可以選擇刪除,不帶此項(xiàng)則默認(rèn)刪除最近的一次進(jìn)度相當(dāng)于git stash drop stash@{0}
git stash clear #刪除所有保存的工作進(jìn)度
pod 命令
pod init #生成Podfile文件
pod spec create DYFToast #生成pod庫(kù)配置文件 (DYFToast.podspec)
pod lib lint #從本地驗(yàn)證你的pod能否通過(guò)驗(yàn)證
pod spec lint DYFToast.podspec --allow-warnings --verbose #從本地和遠(yuǎn)程驗(yàn)證你的pod能否通過(guò)驗(yàn)證,--allow-warnings 允許警告,--verbose 打印詳細(xì)日志
pod spec lint --sources='https://github.com/CocoaPods/Specs' #驗(yàn)證私有庫(kù)能否通過(guò)時(shí),應(yīng)該要添加--sources選項(xiàng),不然會(huì)出現(xiàn)找不到repo的錯(cuò)誤
pod repo push 本地repo名 podspec名 --sources='https://github.com/CocoaPods/Specs' #在私有庫(kù)引用了私有庫(kù)的情況下,在驗(yàn)證和推送私有庫(kù)的情況下都要加上所有的資源地址,不然pod會(huì)默認(rèn)從官方repo查詢。
pod trunk push DYFToast.podspec #發(fā)布pods
pod trunk push DYFToast.podspec --allow-warnings #發(fā)布pods,--allow-warnings 允許警告
pod trunk me #查看注冊(cè)信息
pod trunk info xxx #查看某個(gè)庫(kù)的信息,包括擁有者、各版本版本號(hào)及發(fā)布時(shí)間。
pod trunk add-owner xxx e-mailAddress #將某個(gè)pod 添加一個(gè)維護(hù)者
pod trunk remove-owner xxx e-mailAddress #移除某一個(gè)維護(hù)者
pod trunk delete xxx version #刪除某個(gè)發(fā)送過(guò)的pod
pod trunk deprecate xxx #將某個(gè)pod 失效
pod trunk me clean-sessions #移除本機(jī)sessions
pod trunk me clean-sessions --all #移除除了本機(jī)之外的所有sessions
pod模板
通過(guò)執(zhí)行pod lib create LibXy(pod lib create LibXy --template-url=https://github.com/CocoaPods/pod-template.git)時(shí),下載一個(gè)pod模板,然后更改.podspec文件的配置定制化自己的pod。
What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> Swift
Would you like to include a demo application with your library? [ Yes / No ]
> YES
Which testing frameworks will you use? [ Quick / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> No
點(diǎn)贊+關(guān)注,第一時(shí)間獲取技術(shù)干貨和最新知識(shí)點(diǎn),謝謝你的支持!
最后祝大家生活愉快~