1.分支开发
:::tip
需求:当面在master分支,远程也只有一个master分支。现在需要切换到dev分支
:::
# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 查看所有分支
git branch -a
# 查看追踪关系
git branch -vv
# 创建分支,创建一个本地分支 dev
git branch dev
# 切换到本地分支dev
git checkout dev
# 创建并切换分支, 等同上面两个命令
git checkout -b dev
# 推送本地分支到远程分支,如果远程不存在,则创建一个远程分支
git push <远程主机名> <本地分支名>:<远程分支名>
# 如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
git push origin dev
# == 上面命令表示,将本地的dev分支推送到origin主机的dev分支。如果后者不存在,则会被新建。
2.建立追踪关系
本地分支和远程分支建立追踪关系的三种方式
# 1. 手动建立追踪关系
$ git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>
# 要确保本地有名为 <远程主机名>/<远程分支名> 的远程跟踪分支
git branch --set-upstream-to=origin/dev dev
git branch --set-upstream-to=origin/master master
# 2.push时建立追踪关系
$ git push -u <远程主机名> <本地分支名>
# 加上-u参数,这样push时,本地指定分支就和远程主机的同名分支建立追踪关系。
# 3. 新建分支时建立跟踪关系
$ git checkout -b <本地分支名> <远程主机名>/<远程分支名>
# eg
git checkout -b dev origin/dev
# == 上条命令的意思:创建并切换到dev分支上,接着跟远程的origin地址上的dev分支关联起来
3.本地仓库关联远程仓库
远程仓库为空
::: tip
即本地已经存在一个项目,已经有内容了。
在github或gitee上新建一个空项目,进行关联
:::
# 本地存在的项目还没有初始化
git init
git add .
git commit -m "first commit"
# git branch -m | -M oldbranch newbranch 重命名分支
# 如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名。
git branch -M main
# 关联远程地址
git remote add origin https://github.com/itshizhan-developer/video-player.git
# push 之前最好配置好本地的用户名和email
git push -u origin main
# 本地存在的项目已经是一个git仓库了
git remote add origin https://github.com/itshizhan-developer/video-player.git
git branch -M main
git push -u origin main
:zap:常见错误
$ git branch -M main
error: refname refs/heads/master not found
fatal: Branch rename failed
# 一般是没有commit 成功,可以git status 看下状态
远程仓库不为空
流程同上,此时一般会存在冲突,常见错误和解决方案如下:
4.删除已经提交的文件或目录
对于已经提交到远程仓库的文件或目录,想删除,并添加到.gitignore
如:deploy.bat 文件 或某个目录
## 官方文档
https://git-scm.com/docs/git-rm
# git rm
- Remove files from the working tree and from the index
- 即从工作目录或版本索引中删除文件
# 基础语法
git rm [options] files
# 完整语法
git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch]
[--quiet] [--pathspec-from-file=<file> [--pathspec-file-nul]]
[--] [<pathspec>…]
# 常用的可选 options
-r 如果是目录,递归删除文件
--cached 删除暂存区文件,但保留工作区的文件,并且将这次删除放入暂存区。
-f 删除工作区和暂存区文件,并且将这次删除放入暂存区。
:zap: 注意 git rm
不带参数,慎用
如果不带参数即删除工作区文件,并且将这次删除放入暂存区,即本地文件彻底删除了。
具体操作:
git rm -r --cached .\deploy.bat
git commit -m "delete deploy"
git push
5.git更改origin数据源
# 删除原有的
git remote rm origin
# 添加新的
git remote add origin https://gitee.com/itshizhan/doc_itshizhan_com.git