Git学习笔记

Git学习

Git就是一个分布式的版本控制工具。

它具有代码备份、版本回退、协作开发和权限控制等工作。

Linux 常用命令

  • ls:(list) 查看文件夹下的列表。
  • cd:(change directory)。进入某一个文件夹内的。cd .. 回到上一级。使用tab可以自动补全。
  • clear:清屏(也可以使用ctrl + L
  • mkdir:创建文件夹(make directory)
  • touch:创建文件
  • rm:删除文件(remove)
  • rm dir -r:强制删除文件夹(-r 删除文件夹选项 -f 强制 force)
  • mv test.html t.html: 移动文件,重命名
  • cat : 查看文件里面的内容
  • ctrl + c 取消命令(类似于 ctrl + z)
  • 上下方向键,历史命令

Vim

Vim 是一款命令行下的文本编辑器,编辑方式跟图形化编辑器不同。vim的注释的是#

  • vim test.html 编辑文件(文件不存在则创建)
  • i 进入编辑模式(i insert)
  • ESC + :wq 保存并退出
  • ESC + :q! 不保存并退出

image-20211028200821492

Git使用

初始化用户

第一次使用时,需要配置我们的用户名和邮箱,用于表示开发者的信息

git config --global user.name "your name"
git config --global user.email "you email"

使用git config -l 来查看配置信息

文件初始化

git init 初始化仓库
git add xxx 将文件的修改(创建、删除、编辑等)添加到暂存区
git commit -m '注释' 提交到仓库

查看历史记录

git log

.git 目录

1576587724690

  • hooks 目录包含客户端或服务端的钩子脚本,在特定操作下自动执行
  • info 信息文件夹. 包含一个全局性排除文件,可以配置文件忽略
  • logs 保存日志信息
  • objects 目录存储所有数据内容,本地的版本库存放位置
  • refs 目录存储指向数据的提交对象的指针(分支)
  • config 文件包含项目特有的配置选项
  • description 用来显示对仓库的描述信息
  • HEAD 文件指示目前被检出的分支
  • index 暂存区文件,是一个二进制文件 (git ls-files)

切记: 不要手动去修改 .git 文件夹中的内容

版本库的三个区域

  • 工作区(代码编辑区)
  • 暂存区(修改待提交区)
  • 仓库区(代码保存区,也就是.git 里面的objects文件夹)

image-20211028210448274

常用命令

  • git status 版本状态查看
  • git add -A 添加所有新文件到暂存区
  • git commit -m '注释 ’ 提交修改并注释
  • git diff 查看工作区与暂存区的差异(不显示新增文件) 显示做了哪些修改
  • git diff --cached 查看暂存区与仓库的差异
  • git restore <filename> 删除对文件的修改。还原成未修改之前。
  • git ls-files查看暂存区的文件内容

git status 的颜色说明

  • git status 如果显示的是红色修改, 表明此修改只存在于『工作区』
  • git status 如果显示的是绿色修改, 表明此修改只存在于『工作区』和『暂存区』

历史版本的回滚

查看历史记录

git log
git log --oneline // 这个是一个简短的查看方式,也显示不完整,hash值只显示前7位

如果内容偏多, 需要使用方向键上下滚动, 按 q 退出

根据版本号进行回滚

git reset --hard  b815fd5a6ae655b521a31a9

进行版本回退时,不需要使用完整的哈希字符串,前七位即可

版本切换之前,要提交当前的代码状态到仓库,要不会影响切换后的版本的状态,因为工作区的文件都还在

找不到版本号的情况

查看所有的操作记录(因为切换过后,一些hash值就看不到了,head移动了,所以要用这个命名来查看所有的操作)

git reflog

配置忽略文件

忽略文件: 提交时不会提交该文件

项目中有些文件不应该存储到版本库中,Git 中需要创建一个文件 『.gitignore』 配置忽略,一般与 .git 目录同级。

常见情况有:

  1. 临时文件.
  2. 多媒体文件,如音频,视频(体积大)
  3. 编辑器生成的配置文件 (.idea,每个人的开发环境不同,比如一个人用vscode,而另外一个人用webstorm)
  4. npm 安装的第三方模块(体积大)
# 忽略所有的 .idea 文件夹
.idea
# 忽略所有以 .test 结尾的文件
*.test
# 忽略 node_modules 文件和文件夹
/node_modules

.gitignore 可以在子文件夹下创建

git init
touch .gitignore
vim .gitignore
# 里面书写忽略规则
# 忽略当前文件夹下的app.swp文件
/app.swp
# 忽略所有文件夹下的test.mp3文件
test.mp3
# 忽略指定后缀的文件
*.mp4

仓库中已经提交该文件该如何解决?

  1. 对于已经加入到版本库的文件,可以在版本库中删除该文件

    git rm --cached .idea
    
  2. 然后在 .gitignore 中配置忽略

    .idea
    
  3. add 和 commit 提交即可

分支(重要 )

分支特别重要,开发人员可以在主开发线(master)上分离出新的开发线(branch)

基础操作

创建分支

git branch name #name是分支的名字 

image-20211029131121358

分支就像树上的分叉一样,每棵树都有主干和分支,master就是主干,branch就是它的分支。

做某一个功能的时候,就可以开发一个分支,如果成功就可以将其合并到主分支。保证主分支的正确性。

查看分支

git branch

image-20211029131559558

master前面有星号,代表着,当前的开发线在这里

切换分支

git checkout name

合并分支

合并分支时,如果你想想把name分支合并到master,那么现在就必须处于master分支。被合并的分支是不会被删除的

git merge name

删除分支

git branch -d name

创建并切换分支

git checkout -b name

需要特别注意:切换分支的时候,一定要先提交当前的分支。如果不提交,那么你换过去,之前分支暂存区里面的内容还在,会搞得很混乱。

冲突

当多个分支修改同一个文件后,合并的时候就会产生冲突。这个时候只需要打开产生冲突的文件将【内容修改为最终想要的结果】,然后继续git addgit commit就好。

git stauts # 定位有冲突的文件
# 然后修改冲突的文件的内容
git add 
git commit 
查看冲突的方式

Git远程仓库

配置远程仓库

本地有仓库

一个本地仓库可以绑定对个远程仓库,设置多个别名即可。推送的时候可以向不同的远程仓库推送不同的分支。(只需要输入不同的别名)

# 在远程新建并且不需要初始化
git remote add origin 'src'
# origin 远程仓库的别名
#'scr' 仓库的地址
git push -u 别名 分支名 # 将本地仓库的分支推送到远端, -u 就是表示关联,第一次使用后,后续的提交只需要使用git push(使用使用上次的别名和分支名)
本地没有仓库
git clone src [filename 可以修改克隆下来的文件夹名称] # 代码克隆成功后,会自动生成一个别名 origin

多人协作

一定要先git pull

  1. 创建新的组织。

image-20211029143646023

  1. 邀请成员

  2. 权限分配

  3. 在组织中创建仓库,需要特别注意的是,创建仓库是,owner应该选择组织名,而不是自己的名字。

  4. git pull origin master 拉取更新。

  5. 千万不能出现仓库套仓库的情况。

git clone 和 git pull的区别

git clone会克隆整个仓库

git pull只会拉去当前分支

一些远程仓库

  • Github
  • Gitee
  • 内部搭建的 Git服务(Gitlab

Gitflow

GitFlow详解教程_BlueKitty的博客-CSDN博客_gitflow

相关资料

Git - Book (git-scm.com)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值