iOS开发 Git的使用

一、Git和SVN区别

  • SVN:集中式版本控制系统,版本库集中存放在中央服务器上,
    (工作时用自己电脑,开始工作之前需要从中央服务器获取最新版本,然后开始工作,工作完成后,需要把自己所做的工作推送到中央服务器,集中式版本控制系统必须要互联网才能工作)
  • Git:分布式版本控制系统,版本库在每个人的电脑上
    (没有中央服务器,每个人的电脑是一个完整的版本库,工作的时候不需要联网,因为版本都在自己电脑上,每个人的电脑都有一个完整的版本库,通过推送给其他人看自己修改的地方)
    备注:Git是直接记录快照,而非差异比较。即将全部文件制作一个快照并保存这个快照的索引,快照流是也。近乎所有操作都是本地执行,Git保证完整性,哈希SHA-1散列校验机制

二、Git中的一些术语+概念

  1. WorkSpace:工作区
  2. Index/Stage:暂存区,也叫索引
  3. Repository:仓库区、本地仓库、存储区
  4. Remote:远程仓库
  5. 工作区:通过git init创建的代码库的所有文件但是不包括.git文件(版本库)
  6. 暂存区:通过git add .//Xxx/Xxxx*添加的修改,都是进入到暂存区了,肉眼不可见,通过git status可以看到修改的状态
  7. committed:已提交,已经安全的保存到本地数据库中
  8. modified:已修改,已经修改了文件,还没有保存到本地数据库中
  9. staged:已暂存,对一个已修改文件的当前版本做了标记,是其包含在下次提交快照中
  10. Git仓库:保存项目元数据和对象数据库的地方,其他计算机克隆仓库时就是拷贝这里数据
  11. 工作目录:某个版本独立提取出来的内容,是从Git仓库中提取出来的文件,放在磁盘上供你使用
  12. 暂存区:是一个文件,保存了下次将提交的文件列表信息,一般在git仓库目录中,又称索引
  13. repository:仓库,.git文件
  14. track:跟踪(文件)
  15. stage:暂存
  16. commit:提交
  17. push:推送
  18. pull:拉取

三、使用Git基本工作流程

  1. 将Git的一个存储库克隆为工作副本
  2. 添加/编辑文件修改工作副本
  3. 将文件的快照放入暂存区域
  4. 其他开发人员一起更改/更新工作副本
  5. 在提交之前查看更改
  6. 提交更改,有冲突解决冲突,无冲突推送到存储库(目的将暂存区域文件放入存储库)
  7. 提交后,如果意识到有错误,去修改然后再提交并推送到存储库


    基本工作流程

扩展:
1. Untracked未被跟踪的文件
2. Unmodified未修改
3. Modified修改
4. Staged已暂存
Unmodified -> Modified -> Staged -> Unmodified -> Untracked
未修改文件经过修改,变为已修改,放入暂存区域,提交变为未修改,移除文件变为未被跟踪

四、创建存储库

登陆码云:https://gitee.com/signup   创建和初始化一个新的存储库即可

五、Git的安装

六、命令详解

1. 配置git的一些变量:git config
a.git config --global user.name "xiaohuang"    设置用户名称 (--global全系统设置)
b.git config --global user.email "..."         设置邮箱 (不用global可以单独设置某个信息)
c.git config --global core.editor emacs        切换编辑器为emacs(默认Vim)
d.git config --list                            检查配置
e.git config user.name                         检查指定配置
2. 获取帮助:git help
a.git help config                              获取config命令手册
3. 克隆仓库
a.git clone 仓库地址                            克隆已经存在的仓库(完全克隆)
b.git clone 仓库地址 本地仓库名                  克隆已经存在的仓库,本地仓库名称设置
c.git init 项目路径                             在现有目录中初始化仓库(会生成一个.git的子目录)(仅仅初始化,还没对文件跟踪)
d.git add 文件名                                多功能命令,  跟踪文件至暂存区、放入暂存区、合并时把冲突的文件标记为已解决状态、将添加内容到下一次提交中
e.git commit -m '提交信息'                      提交文件
4. 检查当前文件状态:git status
a.git status -s                                 更为紧凑的格式输出
b.git status --short                            更为紧凑的格式输出

??:新添加的未跟踪的文件
A:新添加到暂存区中的文件
M:修改过的文件(出现在右边的M是修改未放入暂存区,出现在左边代表修改并放入暂存区)

5. 忽略文件是.gitignore文件
无需纳入Git的管理,也不希望总出现在未跟踪文件列表,如日志文件、临时文件等。
a.*.[oa]:忽略.o或.a结尾的文件
b.*~:忽略所有以波浪符结尾的文件
c.你可能还需要忽略log、tmp、pid目录等文件,一开始就设置好,避免将来误提交无用文件
6. 查看不同:git diff
可以具体查看发生了什么改变,类似git status
a.当前做的哪些更新还没有暂存、有哪些更新已经暂存起来准备好了下次提交
b.git diff                    只显示尚未暂存的改动的变化
c.git diff --cached           查看已经暂存起来的变化(--staged同理)
d.git difftool --too-help     图形化分析差异使用
7. 提交更新
a.每次提交前使用git status查看是不是都已经暂存起来了
b.git add .                 如果没有全部暂存将所有文件暂存起来使用该命令
c.git commit                提交信息
d.commit后会出现新窗口用于输入提交信息
e.git commit -m "提交信息"   该命令也可以
8. 跳过使用暂存区域
a.git commit -a -m '提交信息' 把所有已经跟踪的文件暂存起来一并提交,跳过git add步骤
9. 移除文件(移除跟踪文件)
a.git rm                从暂存区移除并从工作目录中删除指定的文件
b.手工删除               还需要提交才能不再纳入版本管理
c.git rm -f             强制删除,当已经修改并放入暂存区删除时使用
d.git rm --cached       从暂存区移除并且移除跟踪,但保留目录中
e.git rm log/\*.log     删除log/目录下扩展名为.log的所有文件
f.git rm \*~            删除以~结尾的所有文件
10. 移动文件
a.git mv file_from file_to  重命名文件时候可以这么用,告诉git
b.上边的命令等价于mv README.md README + git rm README.md + git add README
11. 查看提交历史
a.git log  按照提交事件列出所有的更新
b.git log -p  显示每次提交的内容差异
c.git log -p -2  显示最近两次的提交
d.git log --stat  每次提交的简略的统计信息,列出被修改过的文件
e.git log --pretty 指定使用不同默认格式的方式展示提交历史(short、full、fuller)
f.git log --pretty=format:"%h - %an, %ar : %s"  定制要显示的记录格式
g.git log --pretty=oneline 指定使用不同默认格式的方式展示提交历史(short、full、fuller)
12. 撤销操作
最终只会有一个提交,第二次提交代替第一次提交的结果
a.git commit --amend  已经提交完发现提交信息写错了、几个文件没有添加等,使用该命令重新提交
b.git commit -m '新提交信息' + git add forgotten_file + git commit --amend 同上
13. 取消暂存文件
a.git reset Head <file>  取消暂存,必须在Changes to be committed文字正下方使用   
14. 撤销对文件的更改
a.git checkout -- <file>   撤销对文件更改,还原上次提交前
15. 远程仓库
a.git remote 查看已配置的远程仓库服务器
b.git remote -v 显示远程仓库简写与其对应的URL
c.git remote add <shortname> <url> 添加一个新的远程Git仓库,简写代替URL(默认简写为origin)
d.git fetch gs :拉去仓库中有但本地没有的信息(会抓取克隆后新推送的所有工作,但并不会自动合并或修改当前工作,需要手动将其合并工作区)
e.git pull 自动抓取并且抓取后合并远分支到当前分支
f.git push remote-name branch-name 推送到服务器(git push origin master)
g.git remote show [remote-name] 查看某一个远程仓库更多信息
h.git remote rename 修改远程仓库简写名
i.git remote rm XX 移除一个远程仓库
16. 隐藏操作
a.git stash

参考网址:https://www.yiibai.com/git/git_basic_concepts.html

持续更新中~

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

推荐阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,853评论 5 147
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,902评论 0 11
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,647评论 4 54
  • 前言 Git使用教程 Git是什么 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 ...
    90后的思维阅读 894评论 0 0
  • 有工作的地方没有家,有家的地方确没有工作,它乡容纳不了灵魂,故乡安置不了肉身,从此有了漂泊,有了远方,有了思念……
    Lai小懒阅读 400评论 0 0