美文网首页iOS开发技术
iOS开发 Git的使用

iOS开发 Git的使用

作者: 黄成瑞 | 来源:发表于2019-01-15 19:47 被阅读0次

    一、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

    持续更新中~

    相关文章

      网友评论

        本文标题:iOS开发 Git的使用

        本文链接:https://www.haomeiwen.com/subject/ecjgrqtx.html