分支处理
写了很长时间的代码,任何人直接上手去补充和修改,都会使项目存在直接崩盘的可能
分支存在的意义,就是为了避免项目整体崩盘,无法复原。
我们本身编写代码的就是在一个分支上进行的,也就是默认的 master
分支
每次创建新的分支时,会将当前分支的所有的文件复制到新的分支上。
在新的分支上操作时,并不会对原分支上的文件造成影响,他们之间是彼此独立的。
分支指令
查看分支git branch
查看目前状态的分支情况
创建分支git branch 分支名
创建名为 newline 的分支 git branch newline
创建并切换到创建分支git checkout -b 分支名
创建名为 newlineTwo 的分支,并切换到新的分支下 git checkout -b newlineTwo
切换分支git checkout 分支名
切换到最初创建的 newline 分支git checkout newline
合并分支git merge 分支名
将指定的分支合并过来(合并到当前所在的分支)
被合并的分支必须是经过处理(修改)的,否则会提示已经合并了
- 修改过(有过操作 )的分支才能实现合并,被合并的分支不会消失
- 合并分支解决冲突
当合并的两个分支都 修改并提交了 同样的文件时,会出现冲突;详细解释如下:
newline
分支修改了 2.txt文件
newlineTwo
分支也修改了 2.txt文件
处理办法: 直接在vsCode上点击选项就能实现处理
修复冲突后,记得提交,一定要提交,一定
删除分支git branch -d 分支名
添加标签(版本号)git tag -a v1.0.0 HEAD/commitId
git tag -a v1.1.1 b82d6bd -m 最新版本
- 查看标签
git tag
合并记录git rebase -i HEAD~2
合并 HEAD 前两个祖先记录
rebase 操作
# p, pick = use commit => 使用
# r, reword = use commit, but edit the commit message => 使用,但重新编辑说明
# e, edit = use commit, but stop for amending => 使用
# s, squash = use commit, but meld into previous commit => 使用,但合并上一次
# f, fixup = like "squash", but discard this commit's log message => 就像 squash 那样,但会抛弃这个 Commit 的 Commit message
# x, exec = run command (the rest of the line) using shell => 执行脚本
# d, drop = remove commit => 移除
查看分支修改的不同效果
- master 分支不作处理
- newlineTwo 文件作出处理
新增文件123.txt
后的文件夹状态
- 切回 master 分支 查看状态
协同开发(远端仓库)
之前的操作都是在本地进行的,当团队开发的时候需要将仓库放在远端,即线上仓库
github 提供了这项服务(以github为例)
分布式管理,安全稳定
拥有 github 账号
没有的话自行申请注册
新建仓库
- github 网站设置
- 链接产生
- 复制链接到 git 软件去操作
需要登录账号和密码
# 提交到远程(分支)
git push origin [本地分支名称]:[远程分支名称]
# 远程先创建好分支然后拉取到本地
git checkout -b [本地分支名称] origin/[远程分支名称]
# 拉取远程分支到本地
git pull origin [远程分支名称]:[本地分支名称]
# 查看远程仓库
git remote show origin
# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 查看所有分支
git branch -a
# 删除本地分支
git branch -d [本地分支名称]
# 删除远程分支
git push origin --delete [远程分支名称]
# or
git push origin :[远程分支名称]
# 设置默认提交分支
git branch --set-upstream-to=origin/[远程分支名称] [本地分支名称]