git学习笔记

文章目录

  • 1. git安装与配置
    • 1.1 git安装
    • 1.2 git基本配置
  • 2. git基本工作流程
  • 3. git暂存区
  • 4.git本地分支与合并
  • 5.git-关注修改
    • 5.1 撤销修改
    • 5.2 管理修改
    • 5.3 工作区和暂存区
    • 5.4 版本回退
  • 6. 分支管理
    • 6.1. 创建与合并分支
    • 6.2 解决冲突
    • 6.3 bug分支
    • 6.4 Feature分支
    • 6.5 多人协作
    • 新增: git submodle
    • git乱码

1. git安装与配置

1.1 git安装

查看都有哪个版本的GIT
which -a git 

查看自己使用的git版本
git --version 

使用指定版本的git
vim .bash_profile(mac)
export PATH= 安装路径:$PATH
sourve .bash_parofile(加载)

1.2 git基本配置

  1. 增删改查
基本设置
git config --global user.name "name"
git config --global user.email "email"

帮助文档
git help config
man git-config

增加用户
git config --global --add user.name "name"
git config user.name(查看当前用户)

删除用户
git congif --get user.name
git config --list --global(查看当前配置信息)
git config --global --unset.name "anme"(删除当前name用户)

修改用户
git config --golbal user.name "na"

查看所有用户
git config --get user.name
git config --list --global

# 使用默认编辑器
git config --global core.editor "vim"





  1. 子命令
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.lol "log --oneline"

2. git基本工作流程

git的四种 对象

  • blob
  • tree
  • commit
  • tag:固定的历史提交

git仓库

git仓库的创建
git init 目录 

git裸仓库
git init --bare 目录

将已有文件纳入git
直接进入这个目录下,然后执行
git init即可

或者
git clone 
git clone 裸仓库 新名字

  • 工作区
  • 暂存区
  • 历史提交

工作区—暂存区—历史记录–暂存区or工作区

  • git add
  • git commit
  • git status
  • git rm 删除
  • git mv移动重命名
  • gitignore 不添加某些东西
git add a b 将a和b加入暂存区
git status 查看提交
git commit -m "提交信息" #提交到历史仓库
git rm file 删除工作区和历史仓库的文件
git rm --cached file 仅仅删除暂存区的文件

git mv file newFile 重命名

将当前路径下的所有文件都添加都暂存区
git add .
git add -A 


忽略目录下这些文件,不跟踪这些文件
vim .gitigonore
通过通配符的样式忽略
.[oa] 忽略以.o和.a结尾的文件
!a.o 不要忽略这个文件
**/res 匹配零个或者多个目录


3. git暂存区

  • 工作区
    • git对象库

4.git本地分支与合并

  • git btanch 创建分支
  • git tag 做标记
  • git chechout 切换分支
  • git stash
  • git merge 合并分支
 

5.git-关注修改

5.1 撤销修改

  1. 这个文档在工作区被修改后还没git add .
第一步:撤销工作区的修改
git checkout -- file_name
  1. 这个文档在工作区被修改后git add .到了暂存区
第一步:撤销缓存区的修改
git reset HEAD file_name
第二步:撤销工作区的修改
git checkout -- file_name
  1. 这个文档被commit file_name -m "注释"
撤销本次提交,回退本节

5.2 管理修改

  1. 第一次vim a.txt
  2. 添加到暂存区git add a.txt后第二次vim a.txt
  3. 然后git commit -m "注释"
  4. git status止呕会发现第二次的vim a.txt更改没有修改成功
  • 第一次修改->git add->第二次修改->git commit

  • 你看,我们前面讲了,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

5.3 工作区和暂存区

  • 工作区
    • 电脑山能看到的目录
  • 版本库
    • 工作区有一个.git的文件
    • git add将文件添加到暂存区
    • git commita将暂存区内容提交到当前分区

5.4 版本回退

git reset -- hard HEAD^

git reglog

git reset -- hard 版本号

6. 分支管理

6.1. 创建与合并分支

  1. 新建分支,并切换

git checkout -b bran_name

  1. 查看当前分支

git branch

  1. 切换分支

git checkout master

  1. 合并other分支到当前分支

git merge other_btanch

  1. 删除分支

git branch -d branch_name

6.2 解决冲突

  • 假设在a分支进行修改成a1然后提交,再回到b分支将文件改成b1提交,这个时候试图合并a1分支和b1分支,就会出现冲突。这个是时候编辑源文件改成想修改的样子,修改之后在合并分支,然后删除另外一个分支

6.3 bug分支

  • 当需要保存当前工作区内容但是还不提交的情况下

git stash储藏当前工作现场

  • 回到分区后查看储藏的分区在哪里

git stash list

  • 恢复储藏分区的方式
    • git stash apply恢复,但是stash内容并不删除,需要调用git stash drop来删除
    • git stash pop恢复的同时吧stash内容也删除了

6.4 Feature分支

  • 如果要丢弃一个还没有被合并过的分支git branch -D

6.5 多人协作

  • 从远程仓库克隆的时候,实际上GIT自动把本地的master分支和远程的master分支合并,且远程仓库的默认名称是origin
  • git remoteORgit remote -v可以获取更详细的信息
  • 推送分支
    • git push origin master:制定本地分支
    • 如果要推送其他分支git push origin
1. git config -global user.email "[email protected]"
2. git config -global user.name "xxx"

## 番外篇

1. git init 激活git管理
2. git add 加入缓存区
3. git commit -m "msg" 提交到版本库
4. git status 查看状态
5. git diff 查看文件修改了什么内容
6. git log 查看提交日志
7. git log --pretty=oneline 将日志显示在一行
8. git reset --hard HEAD^ 向前退一版本
9, git reset --hard xxxxx 回退到指定版本
10.  git reflog 显示每一次命令
11. git checkout -- fileName 撤销本地对文件的修改,回退到commit或者add后的状态
12. git reset HEAD 'filename' 将文件filename的暂存区修改放弃



新增: git submodle

git-submodule 操作, 直接把第三方的版本库合并到自己的库中.

在自己的代码库中新增第三方的代码库

git submodule add https://git.oschina.net/gaofeifps/leg.git.  lig/xxx_name

新增后会有一个新文件:.gitmodules

批量针对每一个子库执行指令:

git submodule foreach 这里跟指令,会针对每一个子库都执行。
比如:
git submodule foreach git checkout master
  • 删除子库的命令
git submodule deinit 

查看本地有哪些三方模块可以查看 .gitmodules文件

总结:

1. 新增
git submodule add  

2. 更新/提交
在子模块里面,执行原本的git命令就好。

3. 批量让子库执行指令
git submodule foreach  ‘cmd“

4. 删除子模块
git submodel deinit 子模块名字


5. 下载最新的代码后下载新代码里的子模块代码
git submodel init
git submodel uodate
可以合并为一个指令:
git submodule update --init --recursive

git乱码

需要设置环境变量: export LESSCHARSET=utf-8

# fix git status garbled
git config --global core.quotepath false
git config --global i18n.logoutputencoding utf-8

# fix git commit garbled
git config --global i18n.commitencoding utf-8

你可能感兴趣的:(tools,git,版本控制,git学习,笔记)