一些常用的命令

git config —list # 查看git配置

git config —system —list # 查看系统相关配置

git config —global —list # 查看全局相关配置
所有的配置文件,都保存在本地,因此需要去本地修改
git相关配置文件
1)Git\etc\gitconfig:Git安装目录下的git config —system系统级
2)C:\Users\当前用户名.gitconfig 只适用于当前登录用户的配置 —global全局
狂神Git学习笔记 - 图1
打开后看到如下的配置
[diff “astextplain”]
textconv = astextplain
[filter “lfs”]
clean = git-lfs clean — %f
smudge = git-lfs smudge — %f
process = git-lfs filter-process
required = true
[http]
sslBackend = openssl
sslCAInfo = D:/Git/mingw64/ssl/certs/ca-bundle.crt
[core]
autocrlf = true
fscache = true
symlinks = false
editor = \”D:\\Program Files\\Notepad++\\notepad++.exe\” -multiInst -notabbar -nosession -noPlugin
[credential]
helper = manager
用户级配置则是在
狂神Git学习笔记 - 图2
打开后可以看到如下,就是一些用户信息而已
[user]
name = nijunwei
email = 704263420@qq.com
这是在文件上的一些配置,在GitBash中也是可以进行相关的配置的,例如最常用的配置用户名和邮箱
git config —global user.name “nijunwei”
git config —global user.email “704263420@qq.com” # 加不加引号都可以

Git理论核心

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repistory或Git Directory),其实还有一个远程git仓库(Remote Directory)就可以分为四个不同额工作区域,他们之间的转换关系如下,通过一些指令可以进行一些文件的相互传输
狂神Git学习笔记 - 图3
其中工作区就我们拉取仓库代码后再IDE上对代码进行修改时,我们就是在工作区中进行修改,对于工作区修改的文件,一般可以设置自动add到Stage【暂存区】中,暂存区的文件,可以通过commit指令提交到本地仓库中,本地仓库则通过push指令推送到远程仓库,完成代码的更新
狂神Git学习笔记 - 图4
在一个git目录中的HAED文件中,有一些描述
ref: refs/heads/PXD # 当前所处的节点分支,master是主分支
简单地说,四个区域就是这样的一个情况

  • Workspace:工作区,就是本地项目代码存放的地方
  • Index/Stage:暂存区,用于临时存放改动,事实上是一个文件,保存即将提交到文件列表信息
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里有提交到所有版本的数据。其中.git/HEAD文件指向最新放入仓库的版本
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是项目组中的一台电脑用于远程数据交换

    Git使用流程

    巩固一下,从上传add\commit\push到最终fetch\clone\pull
    情景一:在一个文件夹中,你试图将该文件以本地仓库的形式上传到Gitee/Github中
    在文件夹中GitBash Here
    git init # 初始化操作,会在当前目录自动生成一个.git初始化文件
    情景二:从某个项目上clone项目到本地
    到文件夹中GitBash Here
    git clone [url] # clone项目下来
    情景三:文件的4种状态
    版本控制其实就是对文件的版本控制,要对文件进行修改、提交等操作,首先需要知道文件当前在什么状态,不然可能会提交了现在不想提交的文件,或者要提交的文件没提交上

  • Untracked:未追踪,此文件在文件夹种,但是没有加到git库,不参与版本控制,通过git add状态变为staged

  • Unmodify:文件已经入库,未修改,即版本库种的文件快照内容与文件夹中完全一致,这种类型的文件有两种取出,如果他被修改二改变为Modified,如果使用git rm移出版本库,则成为untracked文件
  • Modified:文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也会有两个去处,通过git add可进入暂存staged状态,使用git checkout则丢弃修改果,返回到Unmodify状态,这个git checkout即从库中去除文件,覆盖当前修改
  • Staged:暂存状态,执行git commit则将修改同步到库中,这是库中的文件喝本地文件又变为一致,文件为unmodify状态,执行git reset HEAD filename取消暂存,文件状态为Modified

狂神Git学习笔记 - 图5
然后执行
git add . # 将当前目录添加到暂存区Staged
git commit -m “提交消息,就好像在IDEA上提交的那样” # 之后commit提交到本地仓库,需要记住的是记得添加提交信息
情景4:想要上传项目,但是想忽略一些上传文件
在主目录下建立.gitignore文件,此文件有以下规则
1、忽略文件中所的空行或者#后的内容将被忽略
2、可以使用Linux通配符,如可代表任意多个字符,?代表一个字符,[abc]代表字符可选范围,{string1,string2}代表可选的字符串等
3、如果名称的最前面有一个!,则表示例外规则,将不被忽略
4、如果名称前的最前面是一个路径分割符号(/),则表示作用的是该目录下的内容
5、忽略顺序从文件上到下
.txt # 忽略掉所有txt文件
!lib.txt # 但是lib.txt 例外
/temp # 忽略根目录下的TODO文件,不包括其他目录temp【?啥意思】
build/ # 忽略build/下的所有文件【包括文件夹】
doc/*.txt # 忽略doc目录下所有的txt文件
情景5:本机git绑定Gitee或者GitHub账号,实现免密码登录
进入 C:\Users\用户名.ssh 目录
ssh-keygen -t rsa # 生成ssh密钥,一路enter下去,使用rsa加密算法,生成玩之后,会生成id_rsa.pub和id_rsa
狂神Git学习笔记 - 图6
id_rsa.pub:公钥
id_rsa:私钥
进入Gitee主页,设置ssh公钥
将id_rsa.pub以文本形式打开,复制其中的内容到
狂神Git学习笔记 - 图7

IDAE集成git

1、新建一个项目,或者打开已经有的原有项目
2、在远程新建一个项目,建立项目模板后,将.git文件夹复制到你的项目的主文件下
狂神Git学习笔记 - 图8
狂神Git学习笔记 - 图9
3、使用git相关指令完成文件的上传
git add .
git commit -m “上传消息”
git push origin [分支名]

Git分支

master分支:主分支
其他分支:各个人都可以创建自己的分支,后期再合并到主分支,或者不同分支独立存在即可
git branch # 查看当前分支
git branch 分支名 # 创建一个新的分支

git checkout -n [branch] # 新建一个分支,并切换到该分支

git merge [branch] # 合并知道分支到当前分支

git branch -d [branch-name] # 删除分支

删除远程分支
git push origin —delete [branch-name]
git branch -dr [remote/branch]
如果多个分支并行执行,不会导致代码冲突,但是如果将分支合并,就可能导致版本冲突。
一般来说,master分支是存储正式版本的分支,而其他dev、pro、或者各自创建的分支,都可以进行代码的操作,但是master分支上尽量不要做操作,而是由其他的版本merge到主分支上