git简介

分布式版本控制软件

本地:一个文件,多个控制文件

集中式版本控制:历史版本在中心

分布式:历史版本在各自电脑均有一份

意义

版本回退;

多次多方修改;

操作逻辑

本质

git管理文件夹

步骤

进入要管理的文件夹(进门)

初始化(提名)

管理

生成版本

命令解读

  1. git status # 查看文件状态
  1. git add "" # 添加管理对象
  1. git add . # 管理所有文件

个人信息配置(用户名和邮箱)

  1. git config --global user.email "419997284@qq.com"
  2. git config --global user.name "Caesar-Victory"
  1. git commit -m 'v1' # 生成版本信息
  1. git status # 查看状态---无分支无版本信息
  1. git log # 查看版本记录

理论

  1. ### 生成版本
  2. 生成的版本不影响原来的版本
  3. 对原版本的修改可以被 git status检测到,依然通过git add . 将修改增加到版本管理,然后再对其进行版本生成

分区介绍

  1. 工作区;暂存区;版本库
  2. 工作区即为当前工作目录;分为已管目录和新文件/修改区【红色】;
  3. git add .
  4. 将文件转交到暂存区【绿色】
  5. git commit -m '版本描述'
  6. 将文件转交到版本库

版本回滚(溯源)

  1. git log # 查看日志
  2. git reset --hard fe47e11aafeb736cc05551f5c0dda24a3a2e6e1b # 指定版本识别码

版本回滚(迈进)

  1. git reflog # 查看重置日志
  2. git reset --hard eedd185 # 指定版本号

剔除修改检测

  1. git checkout -- index.html # 指定文件(包含后缀),注意横线和文件名的空格
  1. git reset HEAD index.html # 暂存区(绿色)--> 回退到工作区(红色)[能够检测修改的红色]

理论

  1. ### 版本控制原理
  2. 保存修改部分,相当于系统快照
  3. 基于主线可以创建多个分支,不同分支之间可以合并
  4. 注意在适当的版本中创建分支(分支基于当前版本)

分支管理

  1. git branch # 查看当前分支

创建分支

  1. git branch [dev] # 创建分支

切换分支

  1. git checkout dev # 切换分支

在主分支上合并版本【可能冲突,合并前解决】

  1. git checkout master # 切换回主干
  2. git merge dev # 合并指定分支

理论—工作流

  1. ###工作流

将项目推到Github

1, 本地创建版本

  1. git init
  2. git add .
  3. git commit -m "20210708_v1"

2, 创建公钥

  1. cd ~/.ssh
  2. ssh-keygen -t rsa -C "xxxxxxxxx@qq.com"
  3. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCucgPhSB5WvH2XwD+Zyx/VZRNEz8GuFDvzZsl10ECbBNgiYmZssu4qj+I1pVhM5cB+bP411Uo+8Bfo8Omm8= xxxxxxxxx@qq.com

3, 开始上传

  1. ls
  2. git remote add origin https://github.com/Caesar-Victory/Django-basical-knowledge.git
  3. git push -u origin master # 被推送对象
  4. git push -u origin dev # 推送其他分支

4,合并逻辑

先从本地拉取仓库数据,合并添加进入同一个版本,再次push

拉取指定分支

  1. git clone -b master https://github.com/Caesar-Victory/Django-basical-knowledge.git

特殊命令

强制合并

  1. $git pull origin master --allow-unrelated-histories

2.6 进军三里屯

  1. ###给远程仓库起别名
  2. git remove add origin 远程仓库地址[克隆时自动添加别名]
  3. ### 向远程推送代码
  4. git push -u origin master [分支名称]
  5. ### 克隆远程仓库代码
  6. git clone 远程仓库地址
  7. ### 切换分支
  8. git checkout 分支

仓库密钥保存位置

  1. C:\Users\41999\.ssh\id_rsa.pub

远程推送地址

  1. C:\Users\41999\Documents\luffycity\dbhot>git remote add origin https://github.com/Caesar-Victory/experiencing-function-of-Git.git

主分支代码推送

  1. C:\Users\41999\Documents\luffycity\dbhot>git push -u origin master

推送过程

  1. Enumerating objects: 21, done.
  2. Counting objects: 100% (21/21), done.
  3. Delta compression using up to 8 threads
  4. Compressing objects: 100% (14/14), done.
  5. Writing objects: 100% (21/21), 1.91 KiB | 977.00 KiB/s, done.
  6. Total 21 (delta 6), reused 0 (delta 0), pack-reused 0
  7. remote: Resolving deltas: 100% (6/6), done.
  8. To https://github.com/Caesar-Victory/experiencing-function-of-Git.git
  9. * [new branch] master -> master
  10. Branch 'master' set up to track remote branch 'master' from 'origin'.

推送到其他分支

  1. git push origin dev

推送过程(无则新增)

  1. Enumerating objects: 4, done.
  2. Counting objects: 100% (4/4), done.
  3. Delta compression using up to 8 threads
  4. Compressing objects: 100% (2/2), done.
  5. Writing objects: 100% (3/3), 318 bytes | 318.00 KiB/s, done.
  6. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
  7. remote:
  8. remote: Create a pull request for 'dev' on GitHub by visiting:
  9. remote: https://github.com/Caesar-Victory/experiencing-function-of-Git/pull/new/dev
  10. remote:
  11. To https://github.com/Caesar-Victory/experiencing-function-of-Git.git
  12. * [new branch] dev -> dev

家庭环境拉取特定版本

  1. git init # 初始化
  2. git remote add origin https://github.com/Caesar-Victory/experiencing-function-of-Git.git # 添加远程路径
  3. git pull origin dev # 先拉去主分支,再拉去dev分支
  4. git pull origin dev # 拉取指定分支、
  5. git branch dev # 在本地创建dev分支
  6. touch a2.py # 创建了新文件
  7. git add . # 将更新纳入版本
  8. git commit -m "在家里开发的a2功能"
  9. git push origin dev # 向远程推送更改

在公司开发

  1. 1. 切换到dev分支进行开发
  2. git checkout dev
  3. 2. master分支合并到dev
  4. git merge master
  5. 3. 修改代码
  6. 4. 提交代码
  7. git add .
  8. git commit -m ""
  9. git push origin dev

开发完毕,进行发布(进入公司)

  1. git branch # 检查当前所处分支
  2. touch a3.py # 创建新文件
  3. git add .
  4. git commit -m "开发完毕"
  5. git checkout master # 切换分支,开始合并
  6. git merge dev # 完成版本合并
  7. git push origin master # 将公司代码推送到仓库matser分支

推送过程

  1. Enumerating objects: 6, done.
  2. Counting objects: 100% (6/6), done.
  3. Delta compression using up to 8 threads
  4. Compressing objects: 100% (4/4), done.
  5. Writing objects: 100% (5/5), 509 bytes | 509.00 KiB/s, done.
  6. Total 5 (delta 1), reused 0 (delta 0), pack-reused 0
  7. remote: Resolving deltas: 100% (1/1), done.
  8. To https://github.com/Caesar-Victory/experiencing-function-of-Git.git
  9. e244a99..0428ad9 master -> master

对dev版本进行上云

  1. git pull origin dev # 将远程dev拉去下来
  2. ### 等价命令
  3. git fetch origin dev # 从仓库拉取到版本库
  4. git merge origin/dev # 从版本库与分支合并
  5. --------------------------------------------------
  6. git push origin dev # 将远程和本地差异化文件全部推送至远程

rebase版本合并

第一种 线性合并

  1. 两种版本选取方式
  1. ### 第一种
  2. git rebase -i HEAD~3 #从最后一个版本算起,合并最近三个版本
  3. ### 第二种
  4. git rebase -i[startpoint][endpoint] # 起止为识别码

针对特定版本的修改命令及其意义

  1. pick:保留该commit(缩写:p
  2. reword:保留该commit,但我需要修改该commit的注释(缩写:r
  3. edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e
  4. squash:将该commit和前一个commit合并(缩写:s
  5. fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f
  6. exec:执行shell命令(缩写:x
  7. drop:我要丢弃该commit(缩写:d
  8. 作者:liqingbiubiu
  9. 链接:https://www.jianshu.com/p/4a8f4af4e803
  10. 来源:简书
  11. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

合并后修改注释

  1. #This is a combination of 3 commits.
  2. # The first comnit's message is:
  3. add b.php
  4. This is the 2nd commit message: # 这是合并后的提交注释信息发布文,根据自己需求,修改注释
  5. add c.php
  6. #This is the 3rd commit message:
  7. add d.php
  8. #Please enter the commit message for your changes. Lines starting
  9. # with'#' will be ignored,and an empty message aborts the commit.
  10. #口的定找们本次rebase操作包含的所有提交,下面注释邯分是gi为我们提供的命令说明。每一个# Date: 星期,月份,日 511:03:02 2018 +0800
  11. #
  12. interactive rebase in progress; onto 36224db
  13. # Last commands done (3 commands done):
  14. # s 90bc004 add c.phpnrnit的注释(缩写:r)
  15. # s 45edfda add d.php
  16. # No commands remaining.
  17. # You are currently editing a commit while rebasing branch 'ssss' on '36224db'.#和前一个commit合并,但我不要保留该提交的注释信息((缩写:f)
  18. # Changes to be committed:
  19. # new file: b.php
  20. # new file:c.php
  21. # new file: d.php

注意

保存命令为vim

  1. :q!强制放弃并且退出
  2. :wq 保存并且退出

第二种 跨分支合并(场景构建)

dev分支的修改

  1. git branch
  2. * master
  3. git branch dev
  4. git checkout dev
  5. Switched to branch 'dev'
  6. git branch
  7. * dev
  8. master

创建文件且提交版本

  1. new-item dev.py -type file
  2. Directory: C:\Users\41999\Documents\luffycity\sanlitun\pro_rebase
  3. Mode LastWriteTime Length Name
  4. ---- ------------- ------ ----
  5. -a--- 2021/7/8 19:55 0 dev.py
  6. git status
  7. On branch dev
  8. Untracked files:
  9. (use "git add <file>..." to include in what will be committed)
  10. dev.py
  11. nothing added to commit but untracked files present (use "git add" to track)
  12. git branch
  13. * dev
  14. master
  15. git add .
  16. git commit -m "dev branch"
  17. [dev 213ce9c] dev branch
  18. 1 file changed, 0 insertions(+), 0 deletions(-)
  19. create mode 100644 dev.py

切换主分支且提交版本

  1. git checkout master
  2. Switched to branch 'master'
  3. git branch
  4. dev
  5. * master
  6. new-item master.py -type file
  7. Directory: C:\Users\41999\Documents\luffycity\sanlitun\pro_rebase
  8. Mode LastWriteTime Length Name
  9. ---- ------------- ------ ----
  10. -a--- 2021/7/8 19:59 0 master.py
  11. git add .
  12. git commit -m "master function"
  13. [master a8f1b6f] master function
  14. 1 file changed, 0 insertions(+), 0 deletions(-)
  15. create mode 100644 master.py

图形化查看日志的方式

  1. git log --graph
  2. * commit 757e6a7a03647270de5ded81677caeb716a52e44 (HEAD -> master)
  3. |\ Merge: a8f1b6f 213ce9c
  4. | | Author: Caesar-Victory <419997284@qq.com>
  5. | | Date: Thu Jul 8 20:04:46 2021 +0800
  6. | |
  7. | | Merge branch 'dev'
  8. | |
  9. | * commit 213ce9ce04ba7d5ac567b138ff1455945f45fef8 (dev)
  10. | | Author: Caesar-Victory <419997284@qq.com>
  11. | | Date: Thu Jul 8 19:56:46 2021 +0800
  12. | |
  13. | | dev branch
  14. | |
  15. * | commit a8f1b6f938b019c3c68690928b3edd32eba8193d
  16. |/ Author: Caesar-Victory <419997284@qq.com>
  17. | Date: Thu Jul 8 20:00:01 2021 +0800
  18. |
  19. | master function
  20. |
  21. * commit edb2c676cade83839c5e24f851e594a517aaf3d5
  22. | Author: Caesar-Victory <419997284@qq.com>
  23. | Date: Thu Jul 8 19:05:54 2021 +0800
  24. |
  25. | v2 & v3 & v4
  26. |
  27. * commit f365ae4e03518dcc1918bd385ebb7759cb8b68d5
  28. Author: Caesar-Victory <419997284@qq.com>
  29. Date: Thu Jul 8 19:04:53 2021 +0800
  30. v1

格式化显示版本信息

  1. git log --graph --pretty=format:"%h %s" # h表示hash值,s指的是版本记录
  2. * 757e6a7 Merge branch 'dev'
  3. |\
  4. | * 213ce9c dev branch
  5. * | a8f1b6f master function
  6. |/
  7. * edb2c67 v2 & v3 & v4
  8. * f365ae4 v1

dev合并master分支

  1. * f365ae4 v1
  2. git branch
  3. dev
  4. * master
  5. git checkout dev
  6. Switched to branch 'dev'
  7. git merge master
  8. Updating 213ce9c..757e6a7
  9. Fast-forward
  10. master.py | 0
  11. 1 file changed, 0 insertions(+), 0 deletions(-)
  12. create mode 100644 master.py
  13. tree /f
  14. 文件夹 PATH 列表
  15. 卷序列号为 0832-D49B
  16. C:.
  17. 1.py
  18. 2.py
  19. 3.py
  20. 4.py
  21. dev.py
  22. master.py

在dev分支新建文件【dev1.py】,然后提交版本【dev branch commit 1】

  1. new-item dev1.py -type file
  2. Directory: C:\Users\41999\Documents\luffycity\sanlitun\pro_rebase
  3. Mode LastWriteTime Length Name
  4. ---- ------------- ------ ----
  5. -a--- 2021/7/8 20:42 0 dev1.py
  6. git add .
  7. git commit -m "dev branch commit 1"
  8. [dev bd9561e] dev branch commit 1
  9. 1 file changed, 0 insertions(+), 0 deletions(-)
  10. create mode 100644 dev1.py

主分支创建文件【master1.py】并且提交版本【master 111】

  1. git checkout master
  2. Switched to branch 'master'
  3. new-item master1.py -type file
  4. Directory: C:\Users\41999\Documents\luffycity\sanlitun\pro_rebase
  5. Mode LastWriteTime Length Name
  6. ---- ------------- ------ ----
  7. -a--- 2021/7/8 20:47 0 master1.py
  8. git add .
  9. git commit -m "master 111"
  10. [master d9e1950] master 111
  11. 1 file changed, 0 insertions(+), 0 deletions(-)
  12. create mode 100644 master1.py

分别检查dev 和 master 版本信息

  1. ### dev 分支
  2. git log --graph --pretty=format:"%h %s"
  3. * bd9561e dev branch commit 1
  4. * 757e6a7 Merge branch 'dev'
  5. |\
  6. | * 213ce9c dev branch
  7. * | a8f1b6f master function
  8. |/
  9. * edb2c67 v2 & v3 & v4
  10. * f365ae4 v1
  11. ### master 分支
  12. git log --graph --pretty=format:"%h %s"
  13. * d9e1950 master 111
  14. * 757e6a7 Merge branch 'dev'
  15. |\
  16. | * 213ce9c dev branch
  17. * | a8f1b6f master function
  18. |/
  19. * edb2c67 v2 & v3 & v4
  20. * f365ae4 v1

合并分支分步骤进行

    1. ### 站在dev分支变基master
    2. git checkout dev
    3. Switched to branch 'dev'
    4. git rebase master
    5. Successfully rebased and updated refs/heads/dev.
    1. ### 切换到master然后合并分支
    2. git checkout master
    3. Switched to branch 'master'
    4. git merge dev
    5. Updating d9e1950..77851fc
    6. Fast-forward
    7. dev1.py | 0
    8. 1 file changed, 0 insertions(+), 0 deletions(-)
    9. create mode 100644 dev1.py
  • ```bash

    查看版本记录

    git log —graph —pretty=format:”%h %s”

  • 77851fc dev branch commit 1
  • d9e1950 master 111
  • 757e6a7 Merge branch ‘dev’ |\ | * 213ce9c dev branch
  • | a8f1b6f master function |/
  • edb2c67 v2 & v3 & v4
  • f365ae4 v1 ```

2.6.9 快速解决冲突

处理逻辑

  1. 安装beyond compare
  2. 在Git中配置
  3. 应用beyond compare解决冲突
  4. 参考信息
    [配置指南]:git配置Beyond Compare - - php中文网博客
    [未经验证的配置方案]:Windows平台下使用Beyond Compare作为GIT默认的比对与合并工具 - HTL - 博客园 (cnblogs.com)
  1. git mergetool file

Mac下配置方法

  1. git config --local merge.tool bc3
  2. git config --local mergetool.path 'C:\Program Files\Beyond Compare 4\BCompare.exe'
  3. git config --local mergetool.keppBackup false # 备份文件无需保留

Windows10 配置方案

  1. ### 源:https://blog.csdn.net/weixin_30453491/article/details/113566354
  2. #difftool 配置
  3. git config --global diff.tool bc4
  4. git config --global difftool.bc4.path "C:\Program Files\Beyond Compare 4\bcomp.exe"
  5. #mergeftool 配置
  6. git config --global merge.tool bc4
  7. git config --global mergetool.bc4.cmd "C:\Program Files\Beyond Compare 4\bcomp.exe"

配置文件新增内容

文件路径

  1. C:\Program Files\Git\etc\gitconfig

配置信息

  1. [diff]
  2. tool = bc4
  3. [difftool "bc4"]
  4. cmd = "\"C:/Program Files/Beyond Compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
  5. [merge]
  6. tool = bc4
  7. [mergetool "bc4"]
  8. cmd = "\"C:/Program Files/Beyond Compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""

查看电脑当前的配置

  1. git difftool --tool-help
  2. git mergetool --tool-help
  3. 'git difftool --tool=<tool>' may be set to one of the following:
  4. vimdiff
  5. vimdiff1
  6. vimdiff2
  7. vimdiff3
  8. The following tools are valid, but not currently available:
  9. araxis
  10. bc
  11. bc3
  12. bc4
  13. codecompare
  14. deltawalker
  15. diffmerge
  16. diffuse
  17. ecmerge
  18. emerge
  19. examdiff
  20. guiffy
  21. gvimdiff
  22. gvimdiff1
  23. gvimdiff2
  24. gvimdiff3
  25. kdiff3
  26. kompare
  27. meld
  28. nvimdiff
  29. nvimdiff1
  30. nvimdiff2
  31. nvimdiff3
  32. opendiff
  33. p4merge
  34. smerge
  35. tkdiff
  36. winmerge
  37. xxdiff

权限不足的解决策略

修改文件权限,步骤依次为:属性—>安全—>权限编辑—>完全控制

命令总结

  1. ### 添加远程连接
  2. git remote add origin 地址
  3. ### 推送代码
  4. git push origin 分支
  5. ### 拉取代码
  6. git pull origin 分支 # 等价于 git fetch origin dev + git merge origin /dev
  7. ### 下载代码
  8. git clone 地址
  9. ### 变基
  10. git rebase
  11. ### 记录图形展示
  12. git log --graph --pretty=format:"%h %s"
  13. ### 合并命令
  14. git merget
  15. ### 移除远程仓库
  16. git remote rm origin # 需管理员权限
  17. ### 关闭SSL认证
  18. git config --global http.sslVerify "false"

团队协作逻辑

主要分支

master:主分支,也可以称为基分支,发布分支

dev: 开发分支

release:预发布版本主要负责修复bug,code review

dev-branch:合作开发分支,团队成员从dev开发分支copy一个分支用于功能开发

主管操作

  1. ### 给版本打标签
  2. git tag -a v1 -m "第一版"
  3. ### 将tag推送至仓库
  4. git push origin --tags
  5. ### 创建并且切换至dev版本
  6. git checkout -b dev
  7. ### 将dev推送至仓库
  8. git push origin dev
  9. ### 在小弟提交pull request之后审核同意,本地拉取合并后的代码
  10. git branch # 查看分支状态,在dev拉取仓库dev
  11. git pull origin dev

小弟分支的操作

  1. git clone # 本地文件夹直接克隆,无需生成git
  2. git log # 查看项目情况
  3. ### 切换到开发分支
  4. git checkout dev
  5. ### 创建斗地主分支
  6. git checkout -b ddz
  7. ### 检查分支情况
  8. git branch
  9. ### 创建并且提交斗地主功能开发,以及上传仓库
  10. touch 斗地主.py
  11. git add .
  12. git commit -m "斗地主功能开发中"
  13. git push origin ddz
  14. <------------------------------------->
  15. vim 斗地主.py
  16. git add .
  17. git commit -m "加班完成开发"
  18. git push origin ddz
  19. <------------------------------------->

项目主管的release工作

  1. ### 在dev分支创建release分支
  2. git checkout -b release
  3. ### 向仓库推送release分支
  4. git push origin release
  5. ### 主管已经完成release分支代码审核工作,将其合并给master 并且删除release分支
  6. ### 切换分支到dev[以下均为本地操作]
  7. git checkout dev
  8. ### 将release版本合并到dev
  9. git merge release
  10. ### 删除release分支
  11. git branch -d release
  12. ### 拉取仓库master分支,生成v2版本
  13. git pull origin master
  14. ### 本地生成标签
  15. git tag -a v2 -m "第二个版本 增加斗地主功能"
  16. ### 将本地标签推送至仓库
  17. git push origin --tags

注意

可能产生冲突,自行解决后合并

2.9 第七阶段:给开源软件贡献代码

  1. fork源代码
    将别人源代码拷贝到我的远程仓库;
  2. 在自己仓库进行修改代码
  3. 给源代码的作者提交修复bug的申请(pull request)

3.0 配置文件

  • 项目配置文件—用户配置

  1. ### 配置文件位置:vim .git/config
  2. git config --local user.name "Caesar"
  3. git config --local user.email "123456789@qq.com"
  • 全局配置文件

  1. ### 配置文件位置:~/.gitconfig[当前用户所在目录]
  2. git config --global user.name "Caesar"
  3. git config --global user.email "123456789@qq.com"
  • 系统配置文件

  1. ### 配置文件位置:/etc/.gitconfig
  2. ### 需要root权限
  3. git config --system user.name "Caesar"
  4. git config --system user.email "123456789@qq.com"
  • 应用场景

  1. git config --local merge.tool bc3
  2. git config --local mergetool.path '/user/local/bin/bcomp'
  3. git config --local mergetool.keppBackup false
  4. git remote add origin 地址 # 默认添加在本地配置文件中(--local)

免密登录

URL中体现

  1. 原来的地址
  2. https://github.com/Caesar-Victory/Stacer.git
  3. 修改的地址
  4. https://用户名:密码@github.com/Caesar-Victory/Stacer.git
  5. git remote add origin https://用户名:密码@github.com/Caesar-Victory/Stacer.git
  6. git push origin master
  7. # 或者修改本地配置文件

SSH实现

  1. 1, 生成公钥和私钥(默认生成在~/.ssh)
  2. ssh-keygen -r ssa
  3. 2, 拷贝公钥的内容并且设置到Github
  4. 3,在git本地中配置SSH地址
  5. git remote add origin git@github.com:Caesar-Victory/Stacer.git
  • git自动管理凭证

Git忽略文件

让Git不再管理当前目录下的某些文件

  1. ### vim 编辑
  2. vim .gitignore
  3. 文件内写入文件名和后缀,跨行书写
  4. *.h凡此后缀,均不管理
  5. .gitignore 免除对文件本身的管理
  6. files/忽略该目录所有文件
  7. !a.h 除该文件以外
  8. *.py[c|a|b] 同时忽略.pyc/.pya.pyb
  9. ### 再次git status
  10. git status

更多规则参考:[https://github.com/github/gitignore]

意义:忽略关键文档,防止泄密

任务管理相关

issues 文档及任务管理

  1. ### 标签 9 labels
  2. #bug
  3. something isn't working
  4. #documentation
  5. lmprovements or additions to documentation
  6. #duplicate
  7. This issue or pull request already exists
  8. #enhancement
  9. New feature or request
  10. #good first issue
  11. Good for newcomers
  12. #help wanted
  13. Extra attention is needed
  14. #invalid
  15. This doesn't seem right
  16. #question
  17. Further information is requested
  18. #wontfix
  19. This will not be worked on

wiki 项目文档

  1. 自行添加m

环境保持

参考与引用

[powershell]:Release v7.1.3 Release of PowerShell · PowerShell/PowerShell (github.com)

[教程]:git push后出现src refspec dev does not match any_kevin的博客-CSDN博客

[教程]:在《Pro Git》引用格式推送这节中出现 fatal: invalid refspec &#39 topic:refs/remotes/origin/topic&#39 报错_Wis Yoong 的博客-CSDN博客 fatal%3A invalid refspec ‘ topic%3Arefs%2Fremotes%2Forigin%2Ftopic’ 1 因为在,Git 的提交。 结果 报错 。 查看Tortoise Git ->Settings:发现这里环境变量和设置的环境变量不一致,猜测是注册表的问题。)

[rebase教程]:【Git】rebase 用法小结 - 简书 (jianshu.com)

致谢

感谢武沛齐老师及路飞学城的无私分享,场景化,独特的教学方式使得学生学完印象深刻,感谢他们的开源精神。
附上哔哩哔哩Git教程视频链接
点击查看【bilibili】