Git基础 | 青训营笔记

107 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第3天

版本控制

什么是Revision Control?

管理多人协同开发项目的技术

如果没有版本控制,在软件开发过程中会出现很多问题。多人开发就必须要使用版本控制。

常见的版本控制工具

  • Git
  • SVN(Subversion)
  • CVS(Concurrent Versions System)
  • VSS
  • TFS
  • Visual Studio Online

版本控制分类

1. 本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人使用。

2. 集中版本控制 SVN

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本。如果不连网,用户就无法看到历史版本。若服务器损坏,或有丢失所有数据的风险。

3. 分布式版本控制 Git

每个人都拥有全部的代码,但是存在安全隐患。

Git环境配置

选择淘宝镜像下载

安装,一般都点下一步。

常用Linux命令

  • touch index.js新建一个文件

  • rm index.js删除一个文件;rm -r删除一个文件夹

  • mv移动文件

  • reset重新初始化终端

  • clear清屏

  • history查看历史命令

  • help帮助

  • #注释

Git配置

查看配置

# 查看配置
$ git config -l
diff.astextplain.textconv=astextplain
...
init.defaultbranch=master
user.name=LittleFish0820
user.email=895677606@qq.com

# 查看系统配置 在Git安装目录下的gitconfig: Git\etc\gitconfig
$ git config --system --list

# 查看当前用户配置 在C:\Users\Administrator\.gitconfig
$ git config --global --list

因此可以直接编辑配置文件

设置用户名与邮箱

$ git config --global user.name "LittleFish"
$ git config --global user.email "895677606@qq.com"

Git基本理论

四个区域

  • Git本地有三个工作区域
    • 工作目录(Working Directory)
    • 暂存区(Stage/Index)
    • 资源库(Repository Or Git Directory)
  • 远程Git仓库(Remote Directory)
graph LR
	id0(Working Directory) --"git add ."--> id1("Stage(Index)")
	id1("Stage(Index)") --"git commit"--> id2("Repository")
	id2("Repository") --"git push"--> id3("Remote Directory")

三种状态

Git管理的文件有三种状态

  • 已修改(Modified)
  • 已暂存(Staged)
  • 已提交(Committed)

Git项目搭建

本地仓库搭建

# 在当前目录新建一个Git
$ git init

克隆远程仓库

$ git clone [url]

Git文件操作

文件的四种状态

  • Untracked 文件虽在,并未加到git库,不参与版本控制
  • Unmodify 文件入库,但未修改 (取消用git rm --cached <file>
  • Modified 文件已修改
  • Staged 暂存状态

查看文件状态

# 查看指定文件状态
$ git status [filename] 

# 查看所有文件状态
$ git status

# 添加所有文件到暂存区
$ git add .

# 提交暂存区中的内容到本地仓库 -m 提交的信息
$ git commit

一个例子

$ touch pom.xml
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        pom.xml

nothing added to commit but untracked files present (use "git add" to track)

# -------------------------------------------------
$ git add .
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   pom.xml

# -------------------------------------------------
$ git rm --cached pom.xml
rm 'pom.xml'
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        pom.xml

nothing added to commit but untracked files present (use "git add" to track)

# -------------------------------------------------
$ git add pom.xml
$ git commit pom.xml

Aborting commit due to empty commit message.

[master (root-commit) debfca6] new file:   pom.xml
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 pom.xml

$ git status
On branch master
nothing to commit, working tree clean

忽略文件

$ touch .gitignore
  • #表示注释
  • *表示任意多个字符
  • ?代表一个字符
  • [abc]表示可选字符范围
  • {String1, String2, ...}表示可选字符串
  • !表示不被忽略
  • /temp表示要忽略的文件在此目录下,子目录的文件不忽略
  • temp/表示要忽略的是子目录,而非文件
*.txt
!lib.txt
/temp
build/
doc/*.txt

使用gitee

免密码登录

# 进入C:\Users\Administrator
$ mkdir .ssh
$ cd .ssh/
$ ssh-keygen -t rsa

将公钥信息添加到gitee账户

$ ssh -T git@github.com
Hi LittleFish0820! You've successfully authenticated, but GitHub does not provide shell access.

在Gitee创建仓库

手动完成

把本地的仓库推送到远程仓库

$ git remote add origin git@github.com/LittleFish0820/miniFlink.git
$ git push -u origin master

如果创建的仓库有其他的文件(比如README.md),需要先pullpush

$ git pull --rebase origin master

Git分支

# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 创建分支
$ git branch (branchname)

# 切换分支
$ git checkout (branchname)

# 合并指定分支到当前分支
$ git merge [branch]

# 删除分支
$ git branch -d (branchname)

# 删除远程分支
$ git push origin --delete (branchname)
$ git branch -dr [remote/branch]