git原理

添加账户

设定用户名和邮箱

1
2
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

查看用户名和邮箱

1
git config --global -l

创建本地仓库

选择某个文件夹作为本地仓库

1
git init

查看状态

1
git status

提交仓库

提交到暂存区

1
2
git add hello.txt
git add . #.表示提交全部文件

提交到本地仓库

1
2
git commit -m '提交信息'
git commit -a -m '提交信息' #修改文件时,-a表示省略git add指令

查看提交记录

1
2
git log
git log --graph --all --oneline #显示成一行

查看最近一次提交记录

1
2
git show
git show commitID #commitID换成自己的,可查看指定记录

忽略文件

.gitignore规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 这样就会匹配所有以txt结尾的文件
*.txt

# 虽然上面排除了所有txt结尾的文件,但是这个不排除
!666.txt

# 也可以直接指定一个文件夹,文件夹下的所有文件将全部忽略
test/

# 目录中所有以txt结尾的文件,但不包括子目录
xxx/*.txt

# 目录中所有以txt结尾的文件,包括子目录
xxx/**/*.txt

回滚

回滚版本

1
git reset --hard commitID   #commitID换成自己的

回滚后,提交记录消失了;查看操作记录,能查询commitID

1
git reflog

创建分支

查看分支

1
git branch

创建与删除

1
2
git branch test     #创建分支
git branch -d test #删除分支

切换分支

1
git checkout test

合并分支

切换回主分支,再合并test分支

1
2
git checkout main
git merge test

查看冲突

1
git diff

变基分支

合并是分支回到主干的过程,而变基是直接修改分支开始的位置
比如我们希望将test变基到main上,那么test会将分支起点移动到main最后一次提交位置
变基后,test分支相当于同步了此前main分支的全部提交

1
git rebase main

优选

test分支有个不错的commit,main分支想要的话,可以通过优选拿来用

1
git cherry-pick commitID  #commitID换成复制目标

远程仓库

远程仓库名可以自定义,通常叫origin,建议使用项目名;本地分支与远端分支名称相同,可以省略不写

1
2
3
4
5
6
7
git remote add 远程仓库名 远程仓库地址
git push 远程仓库名 本地分支名称:远端分支名称

#以下为示例
git remote add origin https://github.com/diyulan/JavaStudy.git
git push origin main:main
git push origin main

身份验证

  • Token令牌,设置过期时间、权限
  • SSH密钥,实现一次性校验

本地生成一个rsa公钥,再去github上传公钥,下次访问github无需登录

1
2
ssh-keygen -t rsa
cat ~/.ssh/github.pub

克隆项目

下载代码到本地,现场编写╮(╯▽╰)╭

1
git clone 远程仓库地址

抓取、拉取和冲突解决

通常使用pull,获取最近版本,再合并到一起

1
2
git fetch 远程仓库    #抓取:只获取但不合并远端分支,后面需要我们手动合并才能提交
git pull 远程仓库 #拉取:获取+合并

如果使用pull出现冲突,打开冲突文件,要么删除要么保留,最后在push到远程仓库

IDEA版本控制

记录一些难理解的汉化名词

  • 签出:新建分支
  • 将当前分支重置到此处:回滚版本,通常选硬模式

设置远程仓库

  • 设置-版本控制-GitHub-添加账号
  • 菜单-Git-管理远程-添加仓库

其他人获取项目

  • 从VCS获取-从版本控制获取-URL输入远程仓库地址-克隆