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. 提交后,如果意识到有错误,去修改然后再提交并推送到存储库


    9062174-fad4176120dca504.png
    基本工作流程

扩展:
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

持续更新中~

猜你喜欢

转载自blog.csdn.net/weixin_33980459/article/details/87084403