Git是什么
Git是一个版本管理控制系统(缩写VCS),它可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来。
Git基本工作流程
Git 的使用
Git 使用前配置
在使用 git 前,需要告诉 git 你是谁,在向 git 仓库中提交时需要用到。
1.配置提交人姓名:git config --global user.name 提交人姓名
2.配置提交人姓名:git config --global user.email 提交人邮箱
3.查看git配置信息:git config --list (分别查看 git config user.name || git config user.email)
提交步骤
git init 初始化git仓库 (mac中Command+Shift+. 可以显示隐藏文件)
git status 查看文件状态
git add 文件列表 追踪文件
git commit -m 提交信息 向仓库中提交代码
git log 查看提交记录
撤销
用暂存区中的文件覆盖工作目录中的文件: git checkout --文件名
将文件从暂存区中删除: git rm --cached 文件名
将 git 仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录:git reset --hard commitID
分支命令
git branch 查看分支
git branch 分支名称 创建分支
git checkout 分支名称 切换分支
git merge 来源分支 合并分支 (备注:必须在master分支上才能合并develop分支)
git branch -d 分支名称 删除分支(分支被合并后才允许删除)(-D 强制删除)
暂时保存更改
在git中,可以暂时提取分支上所有的改动并存储,让开发人员得到一个干净的工作副本,临时转向其他工作。
使用场景:分支临时切换
存储临时改动:git stash
恢复改动:git stash pop
将本地仓库推送到远程仓库
git push https://github.com/teach-tian/ccc.git master
git remote add origin https://github.com/teach-tian/ccc.git // git 添加远程仓库origin (origin是仓库别名)
git push origin master
git push -u origin master
克隆仓库
克隆远端数据仓库到本地:git clone 仓库地址
拉取远程仓库中最新的版本
拉取远程仓库中最新的版本:git pull 远程仓库地址 分支名称
如何邀请别人成为当前项目的开发者
邀请别人成为当前项目的开发者,别人就可以向公共仓库推送代码。
流程如下:
进入github仓库—> settings---->Manage access----->第一次添加会弹出密码输入框------>Invite a collaborator (输入你邀请的B程序员github账号)----> 发送邀请------>B程序员登陆邮箱接受邀请------B程序员可以向仓库推送代码
解决冲突
在多人同时开发一个项目时,如果两个人修改了同一个文件的同一个地方,就会发生冲突。冲突需要人为解决。
跨团队协作
即使你不是团队成员,也可以向别人的仓库贡献代码。
程序员 C fork仓库
程序员 C 将仓库克隆在本地进行修改
程序员 C 将仓库推送到远程 (git push 远程仓库地址 master)
程序员 C 发起pull reqest
点击pull requests—>点击 new pull request-–>create pull request-—>输入推送描述信息–>create pull request
原仓库作者审核 (与提交者对话)
原仓库作者合并代码 (merge pull request)
GIT忽略清单
将不需要被git管理的文件名字添加到此文件中,在执行git命令的时候,git就会忽略这些文件。
git忽略清单文件名称:.gitignore
dependencies npm包文件
/node_modules/
过滤所有.zip文件
*.zip
过滤某个具体文件
/cc/a.css
production 打包文件
/build/
将工作目录中的文件全部添加到暂存区:git add .
为仓库添加详细的说明
创建 README.md(使用markdow 语法)
Linux 命令:
-
ls 查看文件/目录
-
pwd 显示当前的工作目录
-
cd 进入目录
[例子]:
cd 回到注册进入时的目录
cd /tmp 进入 /tmp 目录
cd …/ 进入上级目录 -
mkdir 创建目录
-
rmdir 删除目录
-
cat 显示文件至标准输出
7.cp 拷贝
例子
cp fi le1 file2 将文件 file1 拷贝到文件 file2
- mv 移动
- i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止
[例子]:
mv file1 file2 将文件 file1 改名为 file2
mv file1 file2 /tmp 将文件 file1 和文件 file2 移动到目录 /tmp 下
-
touch 创建文件
-
vi 编辑
i 插入 编辑内容
esc 退出编辑
:wq 保存并退出
git 与svn比较
git: 分布式版本控制系统,免费而超好用的gitgitHub 是使用git进行版本控制的代码管理网站
SVN: 集中式的版本控制系统,而Git是分布式版本控制系统。
区别:集中式版本控制系统是,干活的时候用的都是自己的电脑所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。
中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆
集中式版本控制系统最大的毛病就是必须联网才能工作。
分布式版本控制系统根本没有‘中央服务器’,每个人的电脑上都是一个完整的版本库,这样就可以不用联网了,
但是如果你在自己电脑上修改了文件A,你的同事也修改了A,你们两个需要互相推送就可以看到对方的修改了。
分布式版本控制系统通常也有一台充当‘中央服务器’的电脑,这个服务器用来‘交换大家的修改’,交换修改更方便。
Git极其强大的分支管理