git

git应用

1. git概念

git是一个代码协同管理工具,用于多人协同开发时管理代码

git是一个开源分布式版本控制系统,可用于高效的管理大小项目

作用:

  • 防止代码丢失,可以做备份
  • 代码版本的管理,可以进行多个版本之间的跳跃
  • 可以方便的将代码在多人之间进行共享传输
  • 多人开发时,有各种模式可以方便代码管理

分布式和集中式

  • 分布式:每一个结点都保存完整的代码,没有统一的中央服务器,节点之间相互推送下载代码完成代码共享,例如git
  • 集中式:代码集中管理,每次完成的代码上传到中央管理器,然后再统一从中央管理器中下载代码使用,例如svn

2. git的特点

  • git可以管理各种文件,特别是代码项目,多在Linux和Unix系统中使用分布式管理,不同于集中式,这是git和svn的核心区别
  • git可以很好的支持分支,方便多人协作工作
  • git分布式代码分家安全,有全球唯一的commit版本号
  • git是开源的系统
  • 使用git可以脱网工作,且数据传输速度较快

3. git安装

4. git配置

主要配置git本地仓库的用户名和邮箱

git config

三种配置级别:

git config --system 系统级别(所有用户可共享的配置)
      Linux: /etc/gitconfig
git config --global 用户级别(当前终端所属用户的)
      Linux:  ~/gitconfig
git config          项目级别(当前所在文件夹或目录)
      Window/Linux: ./.git/config

4.1 查看所有配置信息

git config [--system|global] -l 

4.2 配置用户名和邮箱

git config --global user.name "xxx"
git config --global user.email "xxxxxxxxx@xxx.com"

5. git的基本操作

  • 初始化git
git init

在某个目录下初始化仓库后会自动产生git目录,改目录下工作的所有文档可使用git进行管理。【实际上创建本地的仓库,标识当前目录下存在一个.git目录】

【注意】如果当前已存在.git目录,则先删除再初始化

  • 查看仓库状态
git status

可以查看当前仓库的当前分支(默认主分支)上的未提交的资源状态,命令的结果中包含建议执行的命令

  • 添加文件

可以将当前目录中所有的文件或指定的文件添加到暂存区

git add 文件名|.|*
  • 删除暂存区的文件

在没有提交之前,可以将已添加到暂存区的文件删除

git rm --cached 文件名|-r .|*
  • 提交暂存区

将暂存区的文件提交到本地仓库中,每一次提交都必须注释相关信息

git commit -m "本次提交的信息"
  • 查看提交版本信息

查看当前提交的版本日志

git log [--pretty=oneline|email|full|fuller] [-n 数值]
  • 比较文件

本地文件与本地的仓库文件进行比较,显示出不同的地方、

git diff <文件名>

6. git的恢复操作

  • 从本地仓库恢复本地文件

    如果本地文件发生改变之后,想恢复到之前提交的版本内容,可以进行恢复

    git checkout <文件名> ...
    
  • 丢弃工作区的修改

    放弃当前工作目录下某一个文件的修改,实际上同一个命令

    git checkout -- <文件名> ...
    
  • 本地仓库文件的移动和删除

    【注意】移动和删除后,需要再次执行 git commit

    • 在本地仓库中将源文件移动目的目录中(本地也会移动)
    git mv <源文件> <目的目录>
    
    • 在本地仓库中删除指定的文件(本地也会删除)
    git rm <文件名>
    
  • 回到某一个版本

    • 回到上一个版本(commit)

      git reset --hard HEAD
      
    • 回到指定的版本(commit)

      git reset --hard <commit id>
      
    • 查看历史版本记录

      git reflog
      

    【注】回到某一个版本,本地文件也会发生变化,但不是真的删除,还可以通过git reset --hard <commit id>命令再恢复之前的版本

7. 标签管理

标签:在当前工作的位置添加快照,保存工作状态,一般用于版本的迭代

  • 创建标签

    git tag <标签名称>                创建标签
    git tag <标签名称> -m <提示信息>   创建标签并设置提示信息
    git tag <标签名称> <commit id>    指定某一个commit id 处创建标签
    

    【注】一个提交版本可以存在多个标签

  • 查看标签

    git tag
    
  • 查看详细标签

    git show <标签名>
    
  • 删除标签

    对已存在的标签可以删除

    git tag -d <标签名>
    
  • 恢复到指定的标签位置

    git reset --hard <标签名>
    

    【注】恢复的文件只限于本地仓库中的文件,本地新增的文件并不会受到影响

8. 临时工作区管理

用于对当前工作区(暂存区)修改但未提交的文件进行保存,以便在之后的操作时,可以恢复,保存之后可以进行切换分支,恢复之前版本等操作,操作之后在恢复未完成的工作

  • 创建保存临时工作区

    git stash [save <message>]
    

    当本地仓库中的文件修改后,并未提交时,可以保存临时工作区

    保存临时工作区成功之后,当前的工作区(暂存区)与本地仓库保持一致。此时,修改且未提交的信息则会被保存起来

  • 查看临时工作区

    git stash list
    
  • 使用指定的工作区

    将之前未提交的修改的内容进行恢复,继续再修改

    git stash apply stash@{编号}
    
  • 使用最新的临时工作区并删除

    git stash pop
    
  • 删除指定工作区

    git stah drop stash@{编号}
    
  • 删除所有的临时工作区

    git stash clear
    

9. 分支操作

分支主要用于多人协作工作,分支即获取原有代码,在此基础上创建自己的工作环境,单独开发,不会影响其他分支的操作,开发完成后再统一合并到主线分支中

创建分支的好处:安全,不影响其他人工作

9.1 分支的分类

image-20231018080905570

image-20231018080917580

注意:一个项目库只能有一个master分支和一个develop分支。项目库创建后,由版本管理员从master分支创建develop分支,项目组所有成员需要克隆服务器上的项目库到本地,然后再从develop分支创建自己的feature分支进行工作

9.2 分支操作

  • 在当前的分支下创建新的分支

    git branch <分支名称>
    
  • 查看分支

    git branch
    
  • 切换分支

    git checkout <分支名>
    
  • 创建并切换分支

    git checkout -b <分支名>
    
  • 合并分支

    将指定的分支合并到当前分支上

    git merge <分支名>
    
  • 衍合分支

    git rabase <分支名>
    

~/.gitconfig中配置友好显示分支情况

[alias]
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s
%Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

【注】衍合,不会新增一个版本号,只是在当前分支上的最后一个版本重新生成新的版本号,分支的版本靠前放

  • 删除分支

    git branch -d|D <分支名称>
    

    如果删除的分支没有合并,是不能用当前命令删除的,使用-D删除,表示强制删除指定分支

10. 远程仓库

gitee/github,以gitee为例

10.1 gitee仓库创建

  • 打开浏览器,输入 gitee.com ,先登录,登录成功之后

image-20231018082141934

  • 新建仓库

image-20231018082406833

本地生成公钥文件(ssh-keygen命令生成的),将公钥文件的内容复制到gitee上。

image-20231018082934341

image-20231018082946728

image-20231018083127149

10.2 远程仓库的操作

  • 设置本地仓库的远程仓库位置

    git remote add <仓库名称> 远程仓库的地址
    
  • 上传本地仓库的文件

    • 第一次本地仓库上传到远程仓库时的命令:

      git push -u origin master
      
    • 之后再上传到远程仓库的命令:

      git push
      
    • 强制覆盖远程仓库的文件(强制上传):

      git push -u --force origin master
      
  • 远程仓库下载

    • 第一次下载

      git clone 远程仓库的地址(http,ssh)
      

      【注】如果远程仓库给其他人下载,必须向设置它为开源的

    • 其次下载远程仓库的最新的文件

      git pull
      
posted @ 2023-10-18 08:38  常羲和  阅读(33)  评论(0)    收藏  举报
// 侧边栏目录