01《玩转Git三剑客》学习笔记@Git实践(一)

01《玩转Git三剑客》学习笔记@Git实践(一)

一、Git基础

1. Git安装

# 校验是否安装成功:输出版本号即安装成功。git --version

2. 使用Git前需要做的最小配置

# 用户设置git config --global user.name <your_name># 用户邮箱地址设置:便于Code Review邮件发送git config --global user.email <your_email>
  • config的三个作用域:
    1. --local:只对某个仓库有效。缺省时的默认值。
    2. --global:对当前用户所有仓库有效。
    3. --system:对系统所有登录的用户有效。
  • 显示config的配置,加--list
    # 查看命令git config# 查看所有git config --list# 分类查看git config --list --localgit config --list --globalgit config --list --system

3. 创建一个仓库

  1. 把已有的项目代码纳入Git管理
    cd 项目代码所在的文件夹git init
  2. 新建项目直接用Git管理:
    cd 某个文件夹git init <your_project>cd <your_project>

Git常用命令:

# 创建仓库git init [<project_name>]# 查看工作区和暂存区状态git status# 新增单个改动文件到暂存区git add <file_name># 新增整个文件夹下的文件到暂存区git add <file_folder># 同时新增单个文件和整个文件夹下的文件到暂存区git add <file_name> <file_folder># 增加所有改动到暂存区git add .# 同步所有改动文件到暂存区git add -u# 创建commitgit commit -m "<commit_message>"# 直接同步工作区的内容到版本历史git commit -am "<commit_message>"# 查看当前分支日志git log# 查看所有分支日志git log --all# 查看简洁版日志git log --oneline# 查看最近几次日志git log -n4 # 查看最近几次简洁版日志git log -n2 --oneline# 图形化查看日志git log --all --graph# 查看本地分支git branch -v# 创建分支git checkout <branch_name># 创建并切换分支,默认基于当前分支节点创建git checkout -b <branch_name># 基于现有分支或版本创建并切换分支git checkout -b <branch_name> <old_branch | commit_id>   # 同步commitgit pull# 提交commitgit push# 重置工作区和暂存区的改动git reset --hard [<回退到的commit_id>]# 重置暂存区跟HEAD一致git reset HEAD [<file_name>]# 重置工作区跟暂存区一致git checkout -- <file_name># 查看差异git diff <commit_id_1> <commit-id_2># 比较暂存区和HEAD所含文件的差异,确认变更内容git diff --cached# 比较工作区和暂存区的差异git diff [[<branch_name | commit_id> <branch_name2 | commit_id2> ... <branch_nameN | commit_idN>] -- <file_name> [<file_name2> ... <file_nameN>]]# 删除分支: -d保险删除git branch -d <branch_name>git branch -D <branch_name># 修改最近次commit的messagegit commit --amend# 修改老旧commit的messagegit rebase -i <目的commit_id的前一个commit_id>  # 开发中临时加塞紧急任务暂存信息git stash# 读取暂存信息到工作区git stash apply# git stash list 不保留信息git stash pop# 仓库备份:不带工作区git clone --bare <git_address> <git_local_name>

4. 初识工作区和暂存区

工作区改动后add到暂存区,确认没问题后commit到版本历史。

5. 简便快速给文件重命名

git mv <原文件名[.后缀]> <新文件名[.后缀]># 删除文件git rm <file_name>

等同于如下3步:
1) 工作区修改文件名;
2) add到暂存区;
3) commmit到版本历史。

6. 通过图形界面工具来查看历史

gitk

gitk中文乱码解决方案:

# 在C:\Users\Adminstrator\.gitconfig文件末尾加上如下内容设置下文件编码即可[gui] encoding = utf-8

7. 探秘.git目录

// git裸仓库目录.git ├── config // 记录仓库配置信息 ├── description ├── HEAD // 记录当前工作分支 ├── hooks │   ├── applypatch-msg.sample │   ├── commit-msg.sample │   ├── fsmonitor-watchman.sample │   ├── post-update.sample │   ├── pre-applypatch.sample │   ├── pre-commit.sample │   ├── pre-merge-commit.sample │   ├── pre-push.sample │   ├── pre-rebase.sample │   ├── pre-receive.sample │   ├── prepare-commit-msg.sample │   └── update.sample ├── info │   └── exclude ├── objects // 对象合集 │   ├── 0a // 松散tree │   ├── ... │   ├── info │   └── pack // git自我梳理,打包0a松散文件 ├── package.json ├── refs // 引用 │   ├── heads //分支,独立开发空间 │   └── tags // 标签,里程碑 └── yarn.lock

tips1:用markdown编写文件目录结构

  1. 全局安装tree-node-cli
    cnpm i tree-node-cli -g
  2. 进入到要生成目录的文件夹下
  3. 输入以下命令回车
    # -L 确定要几级目录# -I 排除哪个文件夹下的# > 在README文件里生成项目结构树tree -L 3 -I "node_modules" > README.md

tips2:文件访问相关命令

# 输出文件内容cat <file_name># 查看文件内容类型:commit,tree,blobgit cate-file -t <file_content># 查看文件内容git cate-file -p <file_content>

8. committreeblob三个Git对象之间的关系

  1. commit:每次变更。一个commit对应一棵tree
  2. tree:当前commit对应的本项目仓库的文件夹(tree)及文件(blob)快照。
  3. blob:内容相同的文件。不管文件名叫什么,只要文件内容相同,那就是一个blob(节省存储空间)。

9. detached HEAD分离头指针

# 唤起分离头指针git checkout <commit_id>

基于某次commit,不关联任何分支,分支切换时如若不关联分支即被丢失,可做尝试性变更开发。

10. HEAD标识符

HEAD 可以指向分支、commit(分离头指针),最终落脚于commit(常用于快速指代)。

HEAD^,即HEAD^1HEAD~1:上一级。
HEAD^^,即HEAD^1^1HEAD~2:上级的上级。

11. .gitignore指定不需要Git管理的文件

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部