Git的使用笔记

廖雪峰Git使用说明
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/

通过终端生成SSH
ssh-keygen -t rsa 连续回车

如果Mac电脑安装了Xcode,自带有Git功能
配置Git(将来查看历史记录的时候会用到,注意一定要配置)
git config 可以列出或修改配置
git config -l 打印可以配置的相关属性
告诉git当前用户名的姓名和邮件地址
git config —global user.name “张三” 配置提交者的用户名字(全局配置)
git config —global user.emailzhangsan@163.com” 配置提交者的用户邮箱
git —version 打印git版本
——————————————————————————————
① 桌面创建仓库叫MyGit 利用终端创建: mkdir 目录名
命令:cd desktop
命令:mkdir MyGit
② 从终端进入该文件
命令:cd MyGit
③ 命令:git init
作用:初始化git,里面的有个隐藏文件叫.git,里面隐藏有一些文件
现象:Initialized empty Git repository in /Users/zhangzenan/Desktop/MyGit/.git/
命令:cd .git
命令:ls -a 可以查看.git中的所有文件
命令:cd ..
回到MyGit目录中
注:.git目录就是Git版本库(又叫仓库,repository),被称作为工作区.

如果用Git来写红楼梦,应该怎么写?
① 创建一个文本,内容标题:红楼梦,将文件命名为HLM并保存到MyGit中
命令:git status
作用:打印仓库状态
⑤ 打印git状态
命令:git status

终端打印内容:
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
HLM.txt(该名称为红色)
nothing added to commit but untracked files present (use "git add" to track)

翻译内容:(英语一般,大致意思如下)
位于分支 master 上
初始化提交:
没有被追踪的文件:
(使用"git add <file>.."命令将要被提交的东西包含进去)
HLM.txt 要包含的文件名为HLM.txt
没有东西被添加并提交但是目前有未被追踪的文件(使用"git add"命令来追踪)

命令:git add HLM.txt
作用:添加文件到git中(要求Git跟踪文件,将文件置于Git管理之下)

再次git status

终端打印内容(下列显示为成功内容)
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: HLM.txt (名称变为绿色)

⑥ 可以开始写红楼梦第一回啦!
例如:第一回 甄士隐梦幻识通灵 贾雨村风尘怀闺秀(样本)
git commit -m “第一回写完了” 提交文件到Git库中(每次提交都要添加注释,例如对文件修改了什么东西.-m后写的是本次提交的说明)
⑦ 写红楼梦第二回,然后git status,会提示使用两个命令 使用git add . (添加的一个快捷方式) 使用git commit -m ***真正提交
⑧ git log 可以查看之前所做的所有事情 其中有个commit后面跟一堆东西,这是通过其他算法算出的一个唯一标识,将来”回滚”的时候会用到这个标识符
按q退出
⑨ git log --pretty=oneline 可以简化log打印的内容

—————————————————————————————————————

① 发现标题一写错,重新修改,然后git status打印内容. 通过git diff 查看两次修改的内容差别
② git commit -a -m 修改了标题一

—————————————————————————————————————

① 脑袋不清醒写第三回,乱写一通,第二天通过 git diff来查看区别
② 我想回滚到上一个阶段,把工作区中尚未提交的内容废除掉
git checkout HLM.txt 回滚没有add的修改
③ 强制回滚到某一个版本的代码(add/commit过的文件均可回滚) git reset --hard ******
标识符可以只写前几位,或者直接粘过来
④ 想重新恢复到之前最新的那个版本
git reflog 查看之前所有的修改操作,根据前面的标识符进行回滚
—————————————————————————————————————
① 曹雪芹临时有事要出差,于是邀请好友帮她写东西,但是不能直接在原稿上修改,因此要创建分支
git branch 查看分支 ==> 查看稿件作者,默认为master
git branch zhangSan 创建分支
git checkout zhangSan 切换到zhangSan对应的分支
接下来由zhangSan来搞定
② 写第三回.内容:第三回 贾雨村夤缘复旧职 林黛玉抛父进京都.写完后提交git commit -a -m '第三回完成'
git status 打印当前状态
③ 曹雪芹出差回来,发现他写的挺好,准备合并
切换到自己的分支 git checkout master
合并分支 git merge zhangSan
注:SVN创建分支很费劲,需要将所有数据全部复制,但是Git只是一瞬间的事情
④ 作者自己写第四回,内容:第四回 薄命女偏逢薄命郎 葫芦僧乱判葫芦案.写完以后提交一次,然后接到命令出差,让好友zhangSan继续帮她写作
作者走之前提交:git commit -a -m "第四回完事"
zhangSan应该切换到自己的分支继续写作,写第五回并提交.内容:第五回:游幻境指迷十二钗 窗前明月光,意识地上霜
⑤ 作者回来以后发现他写的不怎么滴,准备自己重新写第五回
先切换自己的分支,接着从第四回往后写第五回,内容:第五回 饮仙醪曲演红楼梦,然后提交
提交完以后,忽然他发现他好友写的某些语句特别好,合并分支
现象(出错):因为两个人都写了第五回,合并的时候会发生冲突
解决办法:打开你的文件,会发现所有文件都在了,需要手动把不满意的删了,满意的留下,改好以后再次提交

注:产生冲突的两种情况
① 分支合并会产生冲突
② 多人同时修改一个文件会产生冲突
如果A修改但没提交,B来了,修改并提交.如果这个时候A再提交,会发生冲突,因为当前文件状态已经不是A那时候的状态了.这个时候A要手动修改冲突的地方并再次提交

⑥ 作者认为第一阶段结束,准备发布一个版本0.1
git tag 打印版本
git tag v0.1 添加一个0.1版本

本地管理结束

—————————————————————————————————————
如果频繁出差会影响写作效率,如果在外地也能写作就好了
远程管理:GitHub(提供免费的仓库管理,而且可以查看别人的仓库,例如FMDB)
GitHub(国外的):对于不公开的项目是收费的,公开项目是免费的
commits:提交次数
branches:分支次数
releases:发布版本数
contributors:贡献者个数

技巧:找第三方库都在这里找,而且Star超过3000的最好都看看,常见类库有1000个,知道的越多写代码越顺畅.

http://git.oschina.net(国内的)
如何将自己的项目上传到GitHub上?
SVN的checkout只能获取最新版

创建远程仓库
① 注册账号(github oscine均可) 通过终端命令获取SHH并添加进去
② 创建一个私有项目
项目名随意(MyGit)
项目介绍随意(这是我的第一个项目)
项目语言(Objective-C)
GitIgnore(Objective-C - .gitignore)
开源许可证默认不管
项目属性:勾选私有
ReadMe:默认勾选
点击创建完成
③ 右半部分有个[HTTPS|SSH],选择SSH并复制右边的地址
④ 打开Xcode的偏好设置,选择Accounts
⑤ 左下角有个+号,选择Add Repository
Address:粘贴那个地址
Type:Git,Subversion就是SVN的简写
Authentication:SSH Keys
User Name:默认git
Public Key:公钥
Private Key:私钥
Passphrase:设置密码
⑥ Xcode有个Source Control,选择Check Out
找到你添加的网络仓库,点击Next
选择仓库的保存路径,例如Desktop,点击Download把仓库从网络下载到本地

① 创建一个新工程,保存到本地仓库里面
② 创建好以后左侧烈面会出现一堆?号,表示该文件尚未被追踪
③ 选择Source Control,选择Commit,输入提交内容即可将文件提交到本地仓库
注:
空:表示”无修改”
A:表示”新增”,
C:表示”冲突”,
D:表示”删除”,
G:表示”合并”,
I :表示”忽略”,
M:表示”改变”,
R:表示”替换”,
X:表示”未纳入版本控制,但被外部定义所用”,
?:表示”未纳入版本控制”,
! :表示”该项目已遗失(被非SVN命令删除)或是不完整”,
~:表示”版本控制下的项目与其他类型的项目重名”

④ 给StoryBoard添加一个按钮并设置其”上左右”为20.因为更改了内容,因此会出现M.手动提交到本地仓库中.
提交过程中选中那个文件,可以查看哪里被修改了.结论是:StoryBoard本质就是一个XML文件
⑤ Push:将本地仓库Push到远程仓库中
Pull:把远程仓库的内容加载回来.
注:Push和Pull是一对,多人合作的时候常用
⑥ 给按钮绑定方法用来改变按钮坐标,然后再次提交
⑦ 打开”辅助面板”右侧的按钮,可以用来对比任意两个版本的内容差别
按钮1(Comparison):查看两个版本的内容差别
按钮2(Blame):查看某段代码是谁提交的
按钮3(Log):按照时间查看

如果整体项目已经完成,但是临时想添加一个新功能.应该创建一个新分支再实现,如果试验失败能保证代码能还原
① 创建分支:Source Controller -> Master -> New Branch,创建完毕会自动切换到新的分支,完善按钮的点击事件
② 如果感觉写的没问题就可以合并分支,选择Merge Into Branch.过程当中可以决定是否合并某些代码,下方有开关可以控制
③ 合并完以后会自动切换到Into选择的那个分支.
④ 如果后悔合并想还原怎么办?Xcode只提供了有限功能,更多功能需要依赖终端命令
⑤ 如果电脑不小心死机打不开了怎么办?从远程服务器把仓库下载回来.
通过终端命令跳到desktop
git clone git@git.oschina.net:UILabel/MyGit.git回车即可 如果让输yes就输yes
注:Git将远程仓库clone到本地,会把仓库中的所有东西都弄出来,包括版本记录

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

推荐阅读更多精彩内容