[git 01] git基本操作(不涉及分支等操作)

git


1. 前言:

svn: 是集中式版本控制系统, 版本库放置在*服务器上;

git: 是分布式版本控制系统, 没有*服务器,每个人的电脑就是一个完整的版本库

卸载: 先删除git的环境变量, 再卸载

2. Linux基本命令

cd cd .. pwd ls clear history 查看历史命令 help # 表示注释

touch a1.txt rm a1.txt 新建文件, 移除文件

mkdir test rm -r test 新建文件夹, 移除文件夹

mv a1.txt test 移动文件到文件夹

3. git 本地配置操作

git config -l #显示所有git配置
git config --system --list #显示系统配置
git config --global --list #显示本地用户配置
#系统配置文件的位置: git/etc/gitconfig文件
#本地配置文件位置: C:/user/myuser/.gitconfig文件
# 使用  git config --system -e # 可以直接打开配置文件

git config --global user.name ""
git config --global user.email "" # 配置用户名和邮箱

4. git理论

工作目录: working directory

暂存区: stage

资源库: repository/ git directory

远端仓库: remote repository

[git 01] git基本操作(不涉及分支等操作)

.git 文件夹中,head 指向当前工作目录,local repo , index指向暂存区stage


版本控制下的文件状态:

untracked: 未跟踪, 文件在文件夹中,但没有加入到git库中,不参与版本控制。通过add变为staged

unmodify: 文件入库,没有修改,即版本库中的文件快照内容和文件夹中的一致。如果被修改,则为modified;如果被 git rm 移除则为untracked

modified: 文件仅仅被修改,没有其他操作;git add 进入staged; git checkout 丢弃返回到 unmodify,实际位: checkout时,从版本库中取出文件,覆盖当前的修改。

staged: 暂存状态 使用git commit将修改同步到版本库中,这时库中的文件和本地文件一致,文件为unmodify状态;使用 git reset HEAD filename 取消暂存,文件则为modified。

5. git命令

#本地仓库搭建(在一个新的文件夹中进行初始化)
git init
或者
#去远程仓库clone (需要配置ssh)
git clone git@xxxx # 选择ssh的,方便之后提交

#开始版本控制: 添加了一个文件 new.txt
git status #查看文件的状态
git add new.txt  # 提交到stage暂存区 使用 . 表示add所有的修改文件
git commit -m "描述" # 提交到本地仓库中
git push #提交到远程仓库

关于git提交的资源过滤:(忽略某些文件,仅提交工作文件)

主目录下新建 .gitignore文件,规则如下:

  1. # 表示注释

  2. * 表示多个字符 ? 表示一个字符 [abc] 表示可选字符范围, {String1, String2} 表示可选字符串

  3. ! 表示额外规则,该文件不被忽略, 如: *.txt 忽略所有txt文件,但 !first.txt 表示该文件不被忽略。

  4. 路径分隔符在前面: 表示只忽略此文件夹

    eg: 文件目录有: root下的temp 和abc/temp 两个文件夹

    /temp 表示只忽略 root/temp下的文件,abc/temp不受影响

    temp/ 表示忽略所有子文件夹下的temp文件夹

*.txt
!lib.txt # 所有txt文件忽略但lib.txt保留

添加部分

  1. 基础操作添加
git diff # 查看workspace和staging中的区别	
#查看之后,如果已经add到staging中,用
git diff --cached #查看staging中的文件和repo文件的区别
git log # 查看提交记录
git show # 显示修改的内容

git add -p # 当1.txt 添加一行   2.txt添加两行时, 可以选择提交到staging区的某一个文件
		# 当1提交后,继续-p 2.txt, 选择s(split), 可以选择2中修改的哪一行 

  1. 管理变化
管理变化: 
head, master, commit hash(6个数字,代表版本号,可以通过git reflog查看获取)
指令: 
checkout: 丢弃本地修改,
reset: 丢弃staging上的变化,把staging变的和repo一样
reset --hard  提交 强行把repo指向另一个提交, head~是head之前的一个版本,head~2是之前的之前,3是之前三个版本 本地也退回
# add之前的文件, 添加了stupid,
git checkout 文件名 # 退回到修改之前
# git add 到 staging之后,退回到修改之前
git reset 文件名 # 把文件退回到工作区
git checkout 文件名
#git commit 到repo之后,退回到上一个版本
git reset --hard head~   # 直接退回到修改之前
  1. 远程操作
git push origin master # clone的地址就是一个origin, master是本地的主分支
git remote -v # 可以查看从clone下来的是origin, push到了origin

6. ssh连接

为了实现免密码登录

ssh-keygen -t rsa -C"邮箱"
三次回车,生成的密钥在C:/user/myuser/.ssh/id_rsa.pub
在github中添加
使用
git -T git@github.com 测试

[git 01] git基本操作(不涉及分支等操作)

7. IDEA 集成操作git、分支介绍

git pull --rebase #从远端更新都使用这个rebase(把最新的仓库拉去下来)
#本地拉取的时候是v0, 修改之后是v0.1, 这是远程变成了v1;
# 1. 首先 重新拉去
git pull --rebase
# 2. merge合并(解决冲突)
打开文件,把head删除,把add也删除
# 3. add到staging
git add .
# 4. rebase继续
git rebase --continue
# 5. 提交到远程
git push 

工作流:

[git 01] git基本操作(不涉及分支等操作)

上一篇:记录用docker部署springboot项目的过程


下一篇:微服务自动化.01.etcd基本介绍