git的使用

1. 版本控制工具

一种软件工程技巧,确保由不同人所变编辑的同一程序文件都能得到同步

追踪、维护、控制

集中式

集中管理的服务器,保存所有文件的修订版本。开发人员需要连接这台服务器

  • CVS
  • SVN

分布式

  • git

2. Bash-CMD-GUI的区别

Bash

  • git bash 就是一个shell, 是window下的命令行工具,可以执行linux命令
  • 基于CMD,在CMD上增加了一些新的命令与功能
  • 使用bash更方便

CMD

  • 命令行提示符,是Window操作系统上的命令解释程序
  • 可以启动cmd运行git命令

GUI

  • 适合不喜欢命令行编码的人
  • 图形界面

3. Git配置分类

  • /etc/gitconfig文件:针对系统配置
    • 执行git config --system会读写该文件中的配置变量
    • 需要管理员权限才能修改(开发中通常不修改)
  • ~/.gitconfigC/用户/xxx/.gitconfig文件:针对当前用户
    • 执行git config --global读写此文件,对系统的所有仓库生效
  • 使用当前仓库Git目录中的config文件(.git/config):针对该仓库
    • 执行git config --local 读写该文件,默认情况下使用的就是它

安装git之后,第一要做的就是设置用户名和邮箱

git config --global user.name '用户名' 
git config --global user.email '邮箱'

# 查看配置信息
git config --list 

4. git 命令别名

git config --global alias.别名 命令
git config --global alias.st status
git st == git status

5. VS code 集成 git bash 终端

{ 
    ...
    // settings.json 终端配置
  "terminal.integrated.profiles.windows": {
    "PowerShell": {
      "source": "PowerShell",
      "icon": "terminal-powershell"
    },
    "Command Prompt": {
      "path": [
        "${env:windir}\\Sysnative\\cmd.exe",
        "${env:windir}\\System32\\cmd.exe"
      ],
      "icon": "terminal-cmd"
    },
    "GitBash": {
      "path": ["C:\\Program Files\\Git\\bin\\bash.exe"],
      "icon": "terminal-bash"
    },
  },
  "terminal.integrated.defaultProfile.windows": "GitBash",
    ...
}

6. git 操作

  • git init:创建仓库

  • git clone register

  • git add .

  • git commit -m msg

  • git log --pretty=oneline --graph

  • git reflog

  • git status

  • git reset

    • git reset --hard HEAD^^^
    • git reset --hard HEAD~3
    • git reset --hard <commit id>
  • git remote

  • git remote -v

  • git remote add 仓库名 仓库地址

  • git remote show origin

  • git remote prune origin: 删除了那些远程仓库不存在的分支

  • git remote rename old new

  • git remote remove old

  • git pull origin xxx : 拉取远程分支 git fetch + git merge

  • git push origin xxx : 当前分支提交到远程

  • git branch -a : 全部分支

  • git checkout -b xxxx : 创建并切换分支

  • git checkout xxx: 切换分支

  • git checkout --track 远程分支:跟踪远程分支

  • git branch -m oldName newName : 修改分支名称

  • git branch -d xxx : 删除本地分支

  • git branch -D xxx : 强制删除本地分支

  • git push origin --delete [branch_name] : 删除远程分支

  • git push origin :xxx : 删除远程分支

  • git stash

  • git pop : 释放并删除

  • git commit --amend : 修改commit注释

  • git reset --soft HEAD^ : 撤销上一次commit提交内容,--soft(不删除工作空间改动代码,撤销commit,不撤销git add . )

  • git reset --mixed HEAD^: (不删除工作空间改动代码,撤销commit,并且撤销git add . 操作),,

  • git reset --hard HEAD^: (删除工作空间改动代码,撤销commit,撤销git add . )

  • git branch --set-upstream-to=origin/master: 和上游分支建立关联

  • git merge --allow-unrelated-histories: 允许没有基类的两个分支合并

7. 忽略文件配置

不希望git进行跟踪和管理

通常不需要自己创建.gitignore文件

# .gitignore

node_modules

8. git校验和

SHA-1 散列 hash,

40位16进制(0-9)和(a-f)组成的字符串,基于git中文件的内容或目录结构计算出来的

9. 远程仓库验证

  • git Crediential选项

    • 默认都不缓存,每次连接都要输入账号和密码
    • cache, 存放在内存中,15分钟自动清除
    • store: 以明文形式存在磁盘中
    • Mac 中是 osxkeychain: 加密存到用户的钥匙串中
    • windows中是 git gredential manager for windows加密存到用户的钥匙串中
  • ssh

    • ssh-keygen -t ed25519 -C '你的邮箱'生成公钥和私钥

      常见的 SSH 登录密钥使用 RSA 算法。RSA 经典且可靠,但性能不够理想。Ed25519 的安全性在 RSA 2048 与 RSA 4096 之间,且性能在数十倍以上。

10. git标签

重大的版本时,打上标签 v1.0

  • git tag v1.0
  • git tag
  • git tag -a v1.1 -m '注释'
  • git show v1.1
  • git push origin v1.0
  • git tag -d v1.0
  • git push origin -d v1.0
  • git checkout v1.0

11. Git 提交对象

  • git cat-file -t <objects/xx/aaasdfsdf>: 返回文件的二进制
  • git cat-file -p <objects/xx/aaasdfsdf>:返回文件内容

12. Git 工作流

  • master: 主分支

  • develop: 开发分支,版本稳定以后,合并到master分支

  • hotfix: 修复bug分支

  • feature: 新功能、新特性

  • release: 预发布,测试经过测试

origin/main与本地master分支: git checkout --track origin main 会创建main分支并关联上层分支

上面的简写:git checkout develop 会检测本地是否有develop分支,没有的话就去远程中找,并且跟踪远程分支并在本地创建develop分支

本地develop分支: git push origin develop直接将本地分支提交到远程

git rebase master: 将当前分支的base变为master, 变为线性结构

13. 问题及解决

refusing to merge unrelated histories的解决方案(本地/远程)综合

原因是两个仓库不同而导致的,需要在后面加上--allow-unrelated-histories进行允许合并,即可解决问题

posted @ 2023-06-01 03:12  转角90  阅读(2)  评论(0编辑  收藏  举报