Learning Git Branching笔记总结

学习Git推荐使用 链接:Learning Git Branching

Git分支简介

链接:git官方教程
在执行命令git init指令的之后就会自动创建一个分支master,master分支和其他的自己新建的分支相比没有什么特殊的地方。这里所说的master是以前的版本有,但是现在为了某种原因,需要在初始化仓库之后,将master强制转换为main,即命令git branch -M main的作用。

关联本地分支与远程分支

链接:git 本地分支与远程分支关联的一种方法
git pull origin master:feature-wxDemo #git pull <远程主机名> <远程分支名>:<本地分支名>

本地分支与远程分支的关系

链接:git的远程分支是干啥的,和本地的有什么区别?

git branch用法总结,查看、新建、删除、重命名

链接:git branch用法总结,查看、新建、删除、重命名

如何看log(这篇博客教会了我学会了如何版本控制与分支的合并)

链接:git 分支讲解
如何合并多个分支:
链接:如何合并多个分支

  • 创建分支:
    git branch <branch name>
  • 查看各个分支所指向的对象
    git log --oneline --decorate
  • 切换分支
    git checkout <branch name>
  • 输出你的提交历史、各个分支的指向以及项目的分支分叉情况。
    git log --oneline --decorate --graph --all
  • 查看所有的现有分支
    git branch -a
  • 查看更改
    git status
  • 查看本地所有分支
    git branch
  • 查看远程所有分支
    git branch -r
  • 查看本地和远程所有分支
    git branch -a
  • 删除分支
    git branch -d <branchname>
  • 删除远程分支
    git branch -d -r <branchname># 使用-D则表示强制删除,相当于 --delete --force
  • 重命名分支
    git branch (-m | -M) <oldbranch> <newbranch># -M表示强制重命名
  • 切换分支,如果分支不存在,先创建一个分支,然后再切换
    git switch -c <branch name>或者git checkout -b

总结走过的坑

使用git pull origin main:main [rejected]报错(non-fast-forward),而使用git push -u origin main提示要pull,该如何解决

提示要pull说明已经有人将远程的代码更改了,但是自己本地的代码还没有同步,所以需要pull过来,但是使用git pull origin main:main会拒绝,直接使用git push 又会报错没有upstream branch,这个时候直接使用git pull origin main即可,不用后面添加一个:main,然后再git push -u origin main,然后就成功了。这里我不用–rebase,是因为不想 将所有的分支合成一条。

使用git pull origin main:main报错

git pull --rebase origin main # 相当于git fetch+git rebase
或者使用 git branch --set-upstream branch-name origin/branch-name这一句就是关联本地分支和远程分支 (已经弃用,使用git push -u origin main)

一个成功的实例

  1. 先init->add->commit->branch -M main->remote add->push -u origin main,之前已经在GitHub上将readme文件更改了,所以这里报错,提示要先pull。
  2. 按照提示,输入git pull origin main,报错fatal: refusing to merge unrelated histories,使用git pull origin main:main情理之中会rejected,找到了一种解决方法:git pull origin main --allow-unrelated-histories,问题更加严重了,使用push还是提示要pull,使用pull说有冲突未解决自动退出。同时分支名由main->main|MERGING。然后查看git status发现有一个文件和远程的一个文件名相同,然后想当然的将本地的那个文件删掉,重新status发现报错更离谱,然后不得不将.git文件删除,重新来
  3. 重新来到了git pull origin main,报错fatal: refusing to merge unrelated histories,但是我本地没有和远程冲突的文件了,所以我重新试了一下git pull origin main --allow-unrelated-histories,这次成功了,而且没有将分支名后面添加|MERGING,重新push,成功。

解决删除问题

git rm --cached -r useless ## -r参数删除目录,如果要删除文件,删除参数-r,将useless改为需要删除的文件名,这里的useless是需要删除的目录名
git commit -m "remove directory from remote repository"
git push

git commit

执行之前:
在这里插入图片描述
执行之后:
在这里插入图片描述

git branch/git checkout/git checkout -b

Git 的分支也非常轻量。它们只是简单地指向某个提交纪录 —— 仅此而已。
git branch 创建一个新的分支。
git checkout <my_branch>切换到我的已有分支上
git checkout -b <my_branch>新建并切换到my_branch分支上

猜你喜欢

转载自blog.csdn.net/weixin_43141320/article/details/113824659
今日推荐