本篇的基础知识:
- git常用操作命令
- cocoapods基本使用
- cocoapods本地私有库的使用
- cocoapods远程私有库的使用
一、git
1、git分为三个区:工作区、暂缓区、分支(默认master)。
2、源代码管理工具git的一般使用流程
cd 进入文件夹
git init 初始化本地仓库(会生成.git隐藏文件夹)
git status 查看文件状态
git add . 添加文件到暂缓区
git commit -m "注释" 从暂缓区提交文件到本地代码仓库
git tag -a '标签' -m "注释" 打标签
git tag 查看标签
git tag -d '标签名称' 删除标签
//把本地仓库跟远程仓库关联起来
git remote add origin 远程仓库地址 //origin也可该成别的名字,最好别改
git push origin master 上传本地代码到远程仓库master分支
注意权限问题:1、用户名或密码;2、生成公钥私钥:ssh-keygen
git tag 查看标签
git push --tags 上传标签到远程仓库
git tag -d 标签名称 删除本地
git push origin :标签 从远程仓库删除标签
第一次操作:
cd 进入某个文件夹;
git init 初始化
拖入文件
git status 查看文件状态
git add . 添加文件到暂缓区
git commit -m "注释" 提交到master分支
git remote add origin 远程仓库地址
git remote //查询远程仓库
git push origin master
Username for 'https://git.oschina.net': //询问用户名
Password for 'https://lovell@git.oschina.net': //询问密码
//打标签(这里的标签只是跟代码产生关联,版本号太长不好记 git log,相当于给版本号起个别名)
git tag -a '标签' -m '打标签'
git tag //查看标签
git push --tags 上传标签到远程仓库
后续修改了代码提交:
git status
git add .
git commit -m '信息'
git push origin master
git tag '0.0.2'
git push --tags
3、其他操作:
3.1 删除某个标签:
git tag -d '0.0.1' //本地删除
git push origin :'0.0.1' //提交远程删除
4、碰到的坑
1、如果是在github上创建的项目,并且用readme初始化。而本地又没有readme文件,这个时候就会报错。
failed to push some refs to 'https://github.com/、、、/、、、.git',Updates were rejected because the remote contains work that you do not have locally.
解决:代码合并:(pull=fetch+merge)
git pull --rebase origin master
5、注意
5.1 如果git push 403错误,原因:是本地缓存了用户名和密码。
解决办法是:重新设置用户名和密码
git remote set-url origin https://seemygo_wangshunzi@git.coding.net/seemygo_wangshunzi/test.git
其中seemygo_wangshunzi是用户名。
5.2 其他成员怎么克隆代码,怎么上传代码
克隆代码:git pull origin master 或 git clone url.
上传代码:git push origin master
6、分支
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
—— 廖雪峰的官方网站
github上创建分支:
切换分支:git checkout -b dev(dev是分支名)
合并分支:先切换到master分支,再git merge develop
从github上拉取分支:git clone -b branch02 https://github.com/xxxx/xxxx.git
查看当前分支:git branch -v 或 git branch
提交到分支:git push origin branch02
7、开发人员如何使用git进行开发
- 克隆项目:
git clone url
- 查看分支情况:
git branch
(只有master分支) - 在本地创建分支并对应到远程的分支,然后切换到本地branch01分支:
git checkout -b branch01 origin
(branch01是本地分支,origin是对应到远程的分支,二者最好同名)(亲测,最后不写远程仓库origin,最后也可以提交到branch01分支) - 查看分支情况:
git branch
(有master和branch01,并已经切换到了branch01) - 提交分支到远程,这样远程就有了一个分支:
git push origin branch01
- 在branch01下写东西:
- 写完后想丢弃:
git status
,git checkout -- README.md
- 写好后想提交到远程分支,
git add .
,git commit -m'haha'
,git push origin branch01/master
- 写完后想丢弃:
- 提交成功之后,合并代码。
- 在github上合并,github上有提示:有分支提交。可以对比代码,然后合并到master。
- 命令行合并代码:
git checkout master
,git merge --no-ff branch03
然后在命令行中写信息留言,按vi
,写完esc
按shift+:
写命令,wq
保存推出,git push origin master
。
- 切换到master分支并会自动更新:
git checkout master
- 删除本地分支:
git branch -d branch01
- 删除远程分支:
git push origin --delete branch01
- 其他程序员拉取代码:
git pull
疑问:
我在分支branch01中修改了readme.md,git status,显示修改了readme.md,然后切换到master分支,git status,也显示修改了readme.md。这我就感觉奇怪了,明明是在branch01分支中修改的东西,问什么在master分支也有呢?
答:1、因为branch01分支修改东西后没有add和commit到本地服务器,在切换分支时,先提交东西到本地服务器。
2、如果branch01分支未完成的东西不方便提交,利用git stash进行现场保留,然后切换。
3、如果没有提交到本地服务器,不小心带着为commit的工作切换了分支,那么,切换回去,进行步骤1和步骤2.
4、如果带过去了,又不小心add 和 commit了,可以用 git log 记录commit id(复制下来),然后切回原来分支,使用 git cherry-pick [commit id]的方式,将另一分支的提交转到当前分支提交。失误的同学可以了解一下 git cherry-pick 命令。
8、修改远程的URL
1、获取远程url:git remote -v ;
2、修改url:git remote set-url origin https://github.com/xxxxxx/SpringBoot.git;
3、验证下:(当前分支下,查询远程地址)
git remote -v (列出 fetch 和 push 的url)
git remote get-url [--push] [--all] <name>
git remote get-url --all origin (return all URLs)
git remote get-url --push origin (query push URLs rather than fetch URLs)
9、从远程更新代码到本地
fetch方法一、
- git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master
- git log -p master.. origin/master //比较本地的仓库和远程参考的区别
- git merge origin/master //把远程下载下来的代码合并到本地仓库
fetch方法二、
- git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp
- git diff temp//比较master分支和temp分支的不同
- git merge temp//合并temp分支到master分支
- git branch -d temp//删除temp
pull方法二、(拉取并合并)
- git pull origin master
多用fetch,少用 pull 。因为在merge前,我们可以查看更新情况,然后再决定是否合并
10、版本回滚、版本回退(未经实际验证)
首先Git必须知道哪个版本,HEAD指向的版本就是当前的版本,HEAD^表示上一个版本,HEAD^^表示上上个版本,HEAD~100表示往上100个版本。
查看过去的版本:git log
;
查看未来的版本: git reflog
;
--reset--
什时候用reset:没有push到远程,还在本地,可能add,commit后,发现代码有问题。
版本间穿梭(貌似删除指定的commit):git reset --hard 79f673d631b08907496ce792f429e1f00da25b73
reset命令有3种方式:
1:git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
2:git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
3:git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
--revert--
什么时候用revert:已经push到远程,本地和远程都想回退到某个版本,线上线下都保持一致。
git revert:是用一个新的提交(commit,这里也是反向commit)来消除一个历史提交做的修改;
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
--reset和revert的异同:--
相同:
1、都是操作本地代码仓库,不会直接操作远程;
不同:
1、git reset :适用于没有push到远程,是直接删除本地仓库指定的commit来达到回滚效果,删除之后HEAD是向后移动了;
2、git revert:适用于已push到远程,通过新的一次commit(反向commit)来到本地仓库来达到回滚的效果,提交后HEAD一直是向前移动的;
3、如果已经push到远程,还用reset,删除本地指定commit后再提交,可能会导致一堆冲突(revert不会),日后现有分支和历史分支合并时候,reset恢复部分代码依然会出现在历史分支(但revert反向提交的commit不会出现在历史分支)。
—— 参考文章
11、本地仓库的提交的历史纪录 和 远程仓库提交的历史纪录
1、本地提交历史:git log ;
2、远程提交历史:git log remotes/origin/master ;
可用于对于本地和远程的不同处。
其他:
查看分支历史:
git log
git log --graph
git log --graph --pretty=oneline
git log --graph --pretty=oneline --abbrev
git log --graph --pretty=oneline --abbrev-commit
linux命令学习一 :touch和mkdir 创建文件和文件夹
1、创建文件: touch filename
2、创建文件夹:mkdir directoryname
可创建父文件夹或创建多个或创建多级文件夹 mkdir -p parentdir/directoryname
创建目录同时复权 mkdir -m 权限 directoryname