Git

这篇文章写的逻辑乱乱的

在这里插入图片描述

23333

参考

.gitignore

自己写的.gitignore,用于idea中的maven项目:

.idea/
*.iml
out/
target/

vue-cli自动生成的文件:

.DS_Store
node_modules
/dist

# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

spring boot项目自动生产的文件:

HELP.md
/target/
!.mvn/wrapper/maven-wrapper.jar

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
/build/

### VS Code ###
.vscode/

idea中文件颜色

红色表示没有进行版本追踪,右键add后,文件的更新会被加入到暂存区中。我觉得和git add有点不太像,像是一有更新就git add 了。

绿色或蓝色表示正在进行版本追踪,更新会被放入暂存区。写好代码后记得commit提交到本地库,如有必要,进而push到远程仓库。当新建文件时,会被idea提示是否需要追踪。

黑色表示该文件没有更新,与本地库无异。


学习笔记2

入门

版本控制

Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later

  • 局部版本控制系统:每个版本的数据存在本地数据库。

    • 缺点:不适合多人协作

    在这里插入图片描述

  • 集中式版本控制系统(CVCS):通过一个服务器来保存所有版本文件,客户端取出最新文件或提交更新。

    • 缺点:服务器损坏时,会对所有人造成影响

    在这里插入图片描述

  • 分布式版本控制系统(DVCS):每个客户端拥有仓库的镜像和历史。因此服务死机时,客户端可拷贝回去。

在这里插入图片描述

Git历史

  • 起初使用补丁或归档文件来更新Linux内核(1991-2002)
  • 商业DVCS(BitKeeper)允许Linux项目免费试用,但最终关系破裂(2002-2005)
  • Linus Torvalds(Linux创始人)开发了Git(2005-至今)

Git概念

快照,非微分

当提交数据时(即更新版本时),数据如何存储?

  • 其他VCS:每个版本只记录被改变的部分

    在这里插入图片描述

  • Git:对你的项目拍摄快照,存入快照的引用。如果拍摄快照时,一些文件未改变,仅存上个版本对应文件的链接。

在这里插入图片描述

其他

  • 几乎都是局部操作,因为Git对项目有一份完整的拷贝。
  • Git保证数据完整性:所有数据在保存前,都会使用SHA-1哈希算法计算校验和。该哈希值是由40个十六进制字符字符的字符串,基于文件内容或目录结构计算出来的,并且Git使用哈希值来引用文件。哈希值类似这样的:24b9da6552252987aa493b52f8696cd6d3b00373
  • Git仅添加数据:即使你删除数据时,Git也只是记录这个过程。

文件状态

  • Committed:数据被存在本地仓库(.git目录)。
  • Staged:标注的被修改的文件到本地仓库中,用以制作下一个将要提交的版本的快照。实际上,staged状态,git只被改变的部分,称之为index
  • Modified:工作目录中已改变的文件,但未存于本地仓库。
  • unmodified:工作目录中未改变的文件,与上个版本一致
  • untracked:git看不到的文件,如新建文件。

git工作流

  • 提取项目到工作目录

  • 添加数据更改到暂存区(也在git仓库中)

  • 你发起一个commit,会制作快照(不是改变部分了),然后永久的存入git仓库(即新版本)。

在这里插入图片描述

配置

第一次安装Git后,需要使用git config配置一些变量,这些变量存于三个地方:

  • /etc/gitconfig:应用于所有用户,配置时加上--system

  • ~/.gitconfig~/.config/git/config:应用于当前用户,配置时加上--global

  • .git/config:应用于当前git仓库,配置时加入--local,实际上默认为该选项。

    后面的优先级高

身份

每次提交时,会加入这些信息,表示谁提交的。通过全局配置,只需配置一次,如:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

编辑器

提交时,需要写入描述信息,git会打开系统默认编辑器,也可自定义:

$ git config --global core.editor emacs

检查设置

  • 检查所有设置:

    git config --list
    

    同一键值可能会出现多次,来源于不同配置文件,最后的优先级高

  • 检测某一键值

    git config user.name
    

获取帮助

  • 详细帮助:

    git help <verb>
    
  • 简易帮助:

    git add -h
    
  • 在线文档:Reference

基础

创建git仓库

有两种方式:

  • 创建仓库:进入工作目录,执行git init,会创建git仓库(.git下)。

    如果当前目录已有项目文件,可以先track文件(提交到暂存区),然后commit,来初始化第一个版本

  • 克隆仓库:执行git clone <url>,如:

    $ git clone https://github.com/libgit2/libgit2
    

    会获取(pull down)远程仓库的完整数据(包含所有版本),并获取(checkout)项目最新版本到工作目录。

    git支持多种传输协议,如https、ssh等

记录改变

在这里插入图片描述

git add

git add可将untracked、modified状态的文件添加到暂存区。

git add is a multipurpose command — you use it to begin tracking new files, to stage files, and to do other things like marking merge-conflicted files as resolved. It may be helpful to think of it more as “add precisely this content to the next commit

常用git add *

git status

显示当前仓库状态。

Ignoring Files

当某一类文件,不想添加到暂存区,也不想提示untracked时,可以在.gitignore中配置。

配置规则如下:

在这里插入图片描述

git diff

查看文件具体的改变

git commit

将暂存区的内容提交。未添加到暂存区的则不会。

git commit # 之后需要在默认编辑器中输入描述
git commit -m "your description" # 直接写入描述
git commit -a -m 'your description' # 提交前自动将tracked的文件添加到暂存区,然后提交

git rm

在工作区删除文件的同时也在暂存区添加删除操作。

git rm <file>
# 等于
rm <file>
git add

记住,git中仅会添加数据,因此删除也是一种数据添加,即添加删除记录

git mv

通过mv重命名文件,同样也会操作暂存区。

查看提交历史

git log

术语

  • track:添加文件到暂存区
  • pull down:从远程仓库克隆(下拉)仓库
  • checkout:跳转其他分支

未读

Git Basics - Viewing the Commit History

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值