分布式版本控制系统
流程
工作区:写代码 --> git add --> 暂存区 --> git commit --> 版本库
.gitignore
下载
官网下载地址
国内淘宝镜像下载地址
安装
双击, 一直下一步
检测
在任意位置打开命令行
git --version
在任意位置点击鼠标右键,出现: Git Bash Here
就表示安装成功!
git init
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
状态查看
git status
添加到暂存区
git add .
提交到本地仓库
git commit -m "这次提交的日志"
查看历史记录
git log
版本回退与前进
查看所有历史版本
git reflog
恢复指定版本
git reset --hard 版本号
撤销修改
工作区撤销修改
git checkout -- 文件名
暂存区修改
git reset HEAD 文件名
查看本地仓库的分支情况
git branch
查看远程仓库的分支情况
git branch -r
查看本地与远程的所有分支情况
git branch -a
结果中带*的表示当前分支
创建分支
git branch 分支名
创建分支,并切换到新创建的这个分支上
git checkout -b 分支名
git checkout 分支名
注意:本地如果不存在这个分支,则会把远程的给弄下来,如果远程也没有,就报错
git merge 要合并的分支名称 -m "新版本的描述"
git branch -d 分支名
创建远程库
远程库与本地关联
git remote add 别名(默认origin) 远程仓库地址
查看本地库与远程库的关联信息
git remote -v
克隆远程库
git clone 远程仓库地址
上传远程分支
git push -u 远程仓库名 本地分支名:远程分支名
删除远程分支
git push 远程仓库名 --delete 要删除的分支名
拉取远程分支
git fetch 远程仓库名 远程分支名:本地分支名
合并远程分支
git merge 本地分支名 -m 新版本的描述
拉取远程分支与本地当前分支合并
git pull 远程仓库名 远程分支名
拉取远程分支与本地某个分支合并
git pull 远程仓库名 远程分支名:本地分支名
团队间协作开发
跨团队协作开发
ssh免登录
需要先查看本地电脑是否有 ssh 相关的东西 (用户目录下是否有 .ssh 的文件夹)。有就先删除吧。
创建 ssh key
ssh-keygen -t rsa -C "邮箱地址"
接着在 用户目录下找到 .ssh 文件夹中的 id_rsa.pub 这个文件
复制 id_rsa.pub 中的内容
去远程托管平台上添加 ssh
1 这时克隆项目时就可以直接选择使用 ssh 的方式
2 先将本地的https的连接方式给删除,换成 ssh 的连接方式
大家全部都在一个分支上写代码master
不同分支用来干不同的操作
fork pull request 这套操作
接到新的需求要你开发。
基于主干分支(master、main、test)创建一个需求分支 (store-xxx)
a. 远程平台上创建
b. 本地创建
拆分任务
a. 任务1:静态页面编写 2h
b. 任务2:逻辑联调 2h
编写任务1
提交任务1 git commit -m ‘任务1 done’
编写任务2
提交任务2 git commit -m ‘任务2 done’
…
晚上下班前,都提交上去 git push
第二天,继续做需求,还是使用 store-xxx 这个分支
a. 如果这个需求,就你一个人完成,也就是说 这个 store-xxx 分支,是你一个人玩得,就不用更新
b. 如果这个需求,是多个人完成,大家都在 store-xxx 分支上编写代码的话,需要 git pull 一下。
编写任务5
提交任务5 git commit -m ‘任务5 done’
提交合并请求。
git status
查看当前工作空间是否干净。干净则往下操作,否则先处理干净git checkout master
切换到需要被合并的合并上 ,Master分支git pull
拉取一下最新的代码git merge origin/A
合并分支,将 A 分支合并到当前所在分支git status
查看冲突的文件是什么add commit push
git push
推送到远程。git branch -d A
删除分支。同时通知同事,合并完成,你可以删除本地的分支了。master a - b
feature-loginlogin a - b - c
wq a - b - d
feature-loginlogin => master
master a - b - c
wq => master a - b - c - d
pull requests
原因
两个分支在同一个代码上的某一个位置做了修改,这些 git 合并时不知道该听那个分支的。
解决方案
git add
git commit