目录
这篇文章写的逻辑乱乱的
23333
参考
- 【尚硅谷】 Git&GitHub 最全教程,从入门到精通:入门必看
- Ry’s Git Tutorial:深入理解git原理、组件、操作,必看
- git-scm reference:git所有命令参考
- idea下使用git:idea使用git入门
- Intellij Idea - Version Control:idea与git进阶
- idea git:辅助资料,随便瞅瞅
- .gitignore:不被添加到暂存区(git add)的文件,这是具体内容的规范。也可以参考这个Exclude files from version control (ignore)
.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:跳转其他分支