一、分布式与集中式
分布式和集中式的最大区别在于:在分布式下,开发者可以本地提交
,每个开发者机器上都有一个服务器的数据库,拥有一个本地的代码仓库。
二、git常用指令
git clone:下载远程仓库到本地
下载远程仓库到当前路径:git clone 仓库的URL
下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径
git pull:下载远程仓库的最新信息到本地仓库
git push:将本地的仓库信息推送到远程仓库
git help :git指令帮助手册
查看其他指令的做法:git help 其他指令
git config :git的配置信息相关(修改的是.git/config文件)
配置用户名:git config “user.name” 用户名(用于跟踪修改记录)
配置邮箱:git config “user.email” 邮箱(用于多人开发间的沟通)
查看配置信息:git config –l
编辑配置信息:git config –e(用vim编辑,:wq是退出vim编辑器)
设置指令的别名:git config alias.别名 原指令名称
设置带参数指令的别名:git config alias.别名 “原指令名称 参数”
将此设置应用到整个系统中:git config ––global
git status :查文件的状态
查看某个文件的状态:git status 文件名
查看当前路径所有文件的状态:git status
git log :查看文件的修改日志
查看某个文件的修改日志:git log 文件名
查看当前路径所有文件的修改日志:git log
用一行的方式查看简单的日志信息:git log ––pretty=oneline
查看最近的N次修改:git log –N(N是一个整数)
git diff :查看文件最新改动的地方
查看某个文件的最新改动的地方:git diff 文件名
查看当前路径所有文件最新改动的地方:git diff
git init :初始化一个空的本地仓库,生成一个.git目录,用于维护版本信息
在当前路径初始化仓库:git init
在其他路径初始化仓库:git init 仓库路径
git add :将工作区的文件保存到暂缓区
保存某个文件到暂缓区:git add 文件名
保存当前路径的所有文件到暂缓区:git add .(注意,最后是一个点 . )
git commit :将暂缓区的文件提交到当前分支
提交某个文件到分支:git commit -m ”注释” 文件名
保存当前路径的所有文件到分支:git commit -m ”注释”
git reset :版本回退(建议加上––hard参数,git支持无限次后悔)
回退到上一个版本:git reset ––hard HEAD^
回退到上上一个版本:git reset ––hard HEAD^^
回退到上N个版本:git reset ––hard HEAD~N(N是一个整数)
回退到任意一个版本:git reset ––hard 版本号(版本号用7位即可)
git reflog :查看指令使用记录(能够查看所有的版本号)
git rm:删除文件(删完之后要进行commit操作,才能同步到版本库)
三、git的工作流程
四、个人演练(命令行演练)
1.进入到工作目录中,初始化一个代码仓库
git init
2.给该git仓库配置 个 户名和邮箱
git config user.name “why”
git config user.email “[email protected]”
3.初始化代码
touch main.m
git add main.m
4.查看文件的状态(git status)
Untracked files(红 件):新添加的 件或者新修改的 件在 作区中,没有被添加到暂缓区.
Changes to be committed(绿 ):将 作区的代码已经添加到暂缓区中,可以被提交到代码仓库中了
5.修改文件
open main.m
6.将工作区所有的文件添加到暂缓区中
git add .
7.给git命令起别名
git config alias.st “status”git config alias.ci “commit -m”
8.查看历史版本
git log
git reflog
git版本号:a6a87425f2939e874b57591c53d597a73f0a52c7
git版本号是由sha1加密算法 成的 个40位的哈希值:
9.版本回退
git reset —hard HEAD
git reset —hard HEAD^
git reset —hard HEAD^^
git reset —hard HEAD~100
git reset —hard 版本号前7位
10.—global的作 (配置全局的 户名和密码,其他地 可以不配置)
git config --global user.name “why”
git config —global user.email “[email protected]”
五、git的工作原理
如果想了解git的工作原理,有几个核心概念必须知道
工作区(Working Directory):仓库文件夹里除.git目录以外的内容
版本库(Repository):.git目录,用于存储记录版本信息
暂缓区(stage)
分支(master):git自动创建的第一个分支
HEAD指针:用于指向当前分支
git add和git commit的原理
git add :把文件修改添加到暂存区
git commit :把暂存区的所有内容提交到当前分支
六、团队开发
文 件夹/U盘/ 云盘(?)/Github/oschina
1.创建一个代码共享库(让文件夹成为共享库)
git init —bare
2.经理将共享代码仓库中的内容clone下来
git clone 地址
3.项目经理初始化项忽略条件: 在和.git等级目录下创建 个.gitignore 件,在该 件中指定需要忽略的文件。
可以去https://github.com/github/gitignore/blob/master/Objective-C.gitignore查看OC需要忽略的内容,将内容填写到. gitignore中
git add ./git commit -m “注释"将. gitignore添加到本地仓库管理中
初始化项目在.git同录下
将初始化的项目提交到本地
将本地代码库中的内容push到服务器中
4.张三加入开发
git clone 共享代码库的地址
修改代码—>git commit —>git push
注意:同一个 件的共享
同一个文件共享时发生代码冲突
解决方法:先pull在提交,这时有三种选择方式:1.保留自己,2.保留服务器,3.都保留。