git的使用

Posted 转角90

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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进行允许合并,即可解决问题

git使用-git使用流程

git是Linus Torvalds为了帮助Linux内核开发的一个开放源代码的版本控制软件。git与常用的版本控制系统svn,cvs不同,采用了分布式版本库的方式,不必服务器端软件支持。。git不仅仅是版本控制系统,它也是内容管理系统。

git与svn的区别:

1. git是分布式的,svn不是;这是git和其他非分布式的版本扣工资系统最核心的区别。

2. git把内容按元数据方式存储,而svn是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs的文件夹里。

3. git分支和svn的分支不同;分支在svn总一点不特别,就是版本库中的另外一个目录。

4. git没有一个全局的版本号,而svn有:目前为止,这是跟svn相比,git缺少的一个特点。

5. git的内容完整性要优于svn:git的内容存储使用的是sha-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

git的工作流程如下:

1. 克隆git资源作为工作目录。

2. 在克隆的资源上添加或者修改文件。

3. 如果其他人修改了,你可以更新资源。

4. 在提交前查看修改。

5. 提交修改

6. 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

如下图:

技术分享

 

以上是关于git的使用的主要内容,如果未能解决你的问题,请参考以下文章

Git 使用总结

git工具的日常操作使用

GIT的使用,Pycharm中使用GitHub

工作后——Git的使用总结

Git的使用---4.git的基本使用

Git上手:使用Tortoisegit操作Git