组件1:git常用操作命令

本篇的基础知识:

  1. git常用操作命令
  2. cocoapods基本使用
  3. cocoapods本地私有库的使用
  4. cocoapods远程私有库的使用

一、git

1、git分为三个区:工作区、暂缓区、分支(默认master)。
git 2017-06-28
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上创建分支:

Snip20171129_8.png

切换分支: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进行开发
  1. 克隆项目:git clone url
  2. 查看分支情况:git branch (只有master分支)
  3. 在本地创建分支并对应到远程的分支,然后切换到本地branch01分支:git checkout -b branch01 origin(branch01是本地分支,origin是对应到远程的分支,二者最好同名)(亲测,最后不写远程仓库origin,最后也可以提交到branch01分支)
  4. 查看分支情况:git branch (有master和branch01,并已经切换到了branch01)
  5. 提交分支到远程,这样远程就有了一个分支:git push origin branch01
  6. 在branch01下写东西:
    1. 写完后想丢弃:git statusgit checkout -- README.md
    2. 写好后想提交到远程分支,git add .git commit -m'haha', git push origin branch01/master
  7. 提交成功之后,合并代码。
    1. 在github上合并,github上有提示:有分支提交。可以对比代码,然后合并到master。
    2. 命令行合并代码:git checkout mastergit merge --no-ff branch03然后在命令行中写信息留言,按vi,写完escshift+:写命令,wq保存推出,git push origin master
  8. 切换到master分支并会自动更新:git checkout master
  9. 删除本地分支:git branch -d branch01
  10. 删除远程分支:git push origin --delete branch01
  11. 其他程序员拉取代码:git pull
命令行合并代码.png

疑问:
我在分支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方法一、

  1. git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master
  2. git log -p master.. origin/master //比较本地的仓库和远程参考的区别
  3. git merge origin/master //把远程下载下来的代码合并到本地仓库

fetch方法二、

  1. git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp
  2. git diff temp//比较master分支和temp分支的不同
  3. git merge temp//合并temp分支到master分支
  4. git branch -d temp//删除temp

pull方法二、(拉取并合并)

  1. 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335