1. Git基础
什么是git?
git就是一种版本管理工具,就是一种记录文件变化的方式,以便查阅特定版本的文件内容,简单理解Git是一个版本管理控制系统(缩写VCS),它可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来;
2. git工作流程
使用 git 前,需要告诉 git 你是谁,在向 git 仓库中提交时需要用到。
配置提交人姓名:git config --global user.name 提交人姓名
配置提交人姓名:git config --global user.email 提交人邮箱
查看git配置信息:git config --list (就能看到当前你已存储的姓名和邮箱)
注意
如果要对配置信息进行修改,重复上述命令即可。
配置只需要第一次配置即可;
3. 提交步骤
git init 初始化git仓库 (mac中Command+Shift+. 可以显示隐藏文件)
git status 查看文件状态(查看文件是否已经存储到暂存区)
git add 文件列表 追踪文件 (可以将已经修改过的文件存储到暂存区)
git commit -m 提交信息 向仓库中提交代码
git log 查看提交记录
4. 撤销
用暂存区中的文件覆盖工作目录中的文件: git checkout --文件名(恢复文件之后,暂存区中的文件不会消失)
将文件从暂存区中删除: git rm --cached 文件名 (不会影响工作目录和git仓库中的数据)
将 git 仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录:git reset --hard commitID (id值可以通过git log 命令查看提交记录获取到你想恢复的版本id)
5. 分支
分支的含义:分支就是当前工作目录中代码的一份副本。
使用分支,可以让我们从开发主线上分离出来,以免影响开发主线。
一般分为三部分:
- 主分支(master):第一次向 git 仓库中提交更新记录时自动产生的一个分支。
- 、开发分支(develop):作为开发的分支,基于 master 分支创建。
- 功能分支(feature):作为开发具体功能的分支,基于开发分支创建
6. 常用分支命令
git branch 查看分支 (可以看到当前所有分支,和你目前所在哪个分支)
git branch 分支名称 创建分支
git checkout 分支名称 切换分支(注意切换分支时,要先把目前写完的数据保存到暂存区并保存到git仓库,如果没有保存就直接切换的话就会使各分支下的文件变得混乱)
git merge 来源分支 合并分支 (备注:必须在master分支上才能合并develop分支)
git branch -d 分支名称 删除分支(分支被合并后才允许删除)(-D 强制删除)
暂时保存更改
在git中,可以暂时提取分支上所有的改动并存储,让开发人员得到一个干净的工作副本,临时转向其他工作。
使用场景:分支临时切换
存储临时改动:git stash
恢复改动:git stash pop
7. Github
含义:在版本控制系统中,大约90%的操作都是在本地仓库中进行的:暂存,提交,查看状态或者历史记录等等。除此之外,如果仅仅只有你一个人在这个项目里工作,你永远没有机会需要设置一个远程仓库。
只有当你需要和你的开发团队共享数据时,设置一个远程仓库才有意义。你可以把它想象成一个 “文件管理服务器”,利用这个服务器可以与开发团队的其他成员进行数据交换。
8. 多人协作开发流程
A在自己的计算机中创建本地仓库
A在github中创建远程仓库
A将本地仓库推送到远程仓库
B克隆远程仓库到本地进行开发
B将本地仓库中开发的内容推送到远程仓库
A将远程仓库中的最新内容拉去到本地
9. 创建仓库
1.填写仓库基本信息
2.讲本地仓库推送到远程仓库
git push “远程仓库地址” 要推送的分支名称
git remote add origin “远程仓库地址” //git添加远程仓库origin(origin是设置的远程仓库别名,设置好之后运用git push origin master 即可)
git push -u origin master(-u 可以记录上次推送的地址和分支,下次推送如果你要推送的地址和分支不变的话,直接输入git push 即可完成功能,进行拉取时同样可以用此方法)
10. 拉取操作
1.克隆远端数据仓库到本地仓库:git clone 仓库地址
2.拉取远程仓库中最新的版本:git pull 远程仓库地址 分支名称
11. 如何邀请别人成为当前项目的开发者
邀请别人成为当前项目的开发者,别人就可以向公共仓库推送代码。
流程如下:
进入github仓库—> settings---->Manage access----->第一次添加会弹出密码输入框------>Invite a collaborator (输入你邀请的B程序员github账号)----> 发送邀请------>B程序员登陆邮箱接受邀请------B程序员可以向仓库推送代码
12. 解决冲突
在多人同时开发一个项目时,如果两个人修改了同一个文件的同一个地方,就会发生冲突。冲突需要人为解决。(需要人为去把数据中发生冲突的地方进行改正)
13跨团队协作
即使你不是团队成员,也可以向别人的仓库贡献代码。
程序员 C fork仓库
程序员 C 将仓库克隆在本地进行修改
程序员 C 将仓库推送到远程 (git push 远程仓库地址 master)
程序员 C 发起pull reqest
点击pull requests—>点击 new pull request-–>create pull request-—>输入推送描述信息–>create pull request
原仓库作者审核 (与提交者对话)
原仓库作者合并代码 (merge pull request)
14. git与svn比较和区别
git: 分布式版本控制系统,免费而超好用的gitgitHub 是使用git进行版本控制的代码管理网站
SVN: 集中式的版本控制系统,而Git是分布式版本控制系统。
区别:集中式版本控制系统是,干活的时候用的都是自己的电脑所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。
中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆
集中式版本控制系统最大的毛病就是必须联网才能工作。
分布式版本控制系统根本没有‘中央服务器’,每个人的电脑上都是一个完整的版本库,这样就可以不用联网了,
但是如果你在自己电脑上修改了文件A,你的同事也修改了A,你们两个需要互相推送就可以看到对方的修改了。
分布式版本控制系统通常也有一台充当‘中央服务器’的电脑,这个服务器用来‘交换大家的修改’,交换修改更方便。
Git极其强大的分支管理