一、版本控制工具应该具备的功能?

1)协同修改
·多人并行不悖的修改服务器端的同一个文件。
2) 数据备份
·不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
3) 版本管理
·在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率
4) 权限控制
·对团队中参与开发的人员进行权限控制。
·对团队外开发者贡献的代码进行审核——Git独有。
5)历史记录
·查看修改人、修改时间、修改内容、日志信息。
·将本地文件恢复到某一个历史状态。
6)分支管理
·允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

二、git结构

注意:图示的结构均是保存在本地

暂存区: index file
工作区: working tree

三、本地库初始化

1、init

右键菜单“Git Bash Here”,执行以下操作

user@LAPTOP-VAFH00IB MINGW64 /d/笔记/git&&github
$ git init
Initialized empty Git repository in D:/笔记/git&&github/.git/

// 初始化完成,创建了.git文件夹

user@LAPTOP-VAFH00IB MINGW64 /d/笔记/git&&github (master)
$ ll
total 3500
-rw-r--r-- 1 user 197121 3583371 Dec  3 21:00 'Git&GitHub.pdf'

// ll命令查看文件夹下的文件。里面没有.git。因为以.开始的文件夹在系统中被隐藏

user@LAPTOP-VAFH00IB MINGW64 /d/笔记/git&&github (master)
$ ls -lA
total 3504
drwxr-xr-x 1 user 197121       0 Dec  3 21:53  .git/
-rw-r--r-- 1 user 197121 3583371 Dec  3 21:00 'Git&GitHub.pdf'

// 使用ls -lA命令查看所有的文件(包括被隐藏的文件)


user@LAPTOP-VAFH00IB MINGW64 /d/笔记/git&&github (master)
$ ll .git/
total 11
-rw-r--r-- 1 user 197121  23 Dec  3 21:53 HEAD
-rw-r--r-- 1 user 197121 130 Dec  3 21:53 config
-rw-r--r-- 1 user 197121  73 Dec  3 21:53 description
drwxr-xr-x 1 user 197121   0 Dec  3 21:53 hooks/
drwxr-xr-x 1 user 197121   0 Dec  3 21:53 info/
drwxr-xr-x 1 user 197121   0 Dec  3 21:53 objects/
drwxr-xr-x 1 user 197121   0 Dec  3 21:53 refs/


// 查看.git中的文件

自此,本地库已初始化完成,.git文件夹中包括了本地库所需的文件夹与文件。
既然.git被系统隐藏,意味着这个文件夹不要随意更改

签名设置

形式:用户名+地址
如:
用户名:tomEmail
地址:goodMorning@atguigu.com
作用:区分不同开发人员的身份
辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系


tips:命令作用范围。分为项目(仓库)级别和系统用户级别。
项目(仓库)级别的命令作用于当前项目,系统用户级别的命令作用于当前电脑系统登陆的用户。



右键菜单“Git Bash Here”,执行以下操作

user@LAPTOP-VAFH00IB MINGW64 /d/笔记/git&&github (master)
$ git config user.name maxl

// 设置用户名

user@LAPTOP-VAFH00IB MINGW64 /d/笔记/git&&github (master)
$ git config user.email hello@123.com

// 设置E-mail

user@LAPTOP-VAFH00IB MINGW64 /d/笔记/git&&github (master)
$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[user]
        name = maxl
        email = hello@123.com


// 用户签名保存在了.git/config文件下。



tip: linus里的cat命令:将文件中的内容展示到标准输出设备上。


仅需要加上一个 —config 命令就可以设置全局签名。如:

git config --globaluser.name ovenkiller
user@LAPTOP-VAFH00IB MINGW64 /d/笔记/git&&github (master)
$ cd ~

// 打开用户的主目录

user@LAPTOP-VAFH00IB MINGW64 ~
$ pwd
/c/Users/user

// pwd命令:显示当前目录的绝对路径


user@LAPTOP-VAFH00IB MINGW64 ~
$ ll|less

// 分页查看 (注意less关键字起分页查看的作用。q键退出查看)

user@LAPTOP-VAFH00IB MINGW64 ~
$ ls -lA|less

//  分页查看 显示隐藏文件

user@LAPTOP-VAFH00IB MINGW64 ~
$ cat .gitconfig
[user]
        name = ovenkiller
        email = light7777777@foxmail.com

// 系统级的用户签名保存在这里

级别优先级

就近原则:

  • 项目级别优先于系统用户级别,二者都有时采用项目级别的签名
  • 如果只有系统用户级别的签名,就以系统用户级别的签名为准
  • 不允许没有任何签名