1、Git

版本控制

工程设计领域中使用版本控制管理工程蓝图的设计过程。在 IT 开发过程中也可以使用版本控制思想管理代码的版本迭代。

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

Git

Git官网

https://git-scm.com/

Git 的优势

Git结构

说明: clipboard.png

Git和代码托管中心

代码托管中心的任务:维护远程库

局域网环境下: GitLab 服务器

外网环境下 :1、GitHub 2、码云(Gitee)

本地库和远程库

团队内部协作

说明: clipboard.png

跨团队协作

说明: clipboard.png

Git的概念

工作区(本地)

工作区就是你克隆项目到本地后,项目所在的文件夹目录

暂存区(本地)

用于存储工作区中添加上来的变更(新增、修改、删除)的文件的地方。操作时,使用git add .会将本地所有新增、变更、删除过的文件的情况存入暂存区中。

本地仓库(本地)

用于存储本地工作区和暂存区提交上来的变更(新增、修改、删除)过的文件的地方。操作时,使用git commit –m "本次操作描述" 可以将添加到暂存区的修改的文件提交到本地仓库中。

远程仓库(服务器)

简单来说,就是我们工作过程中,当某一个人的开发工作完毕时,需要将自己开发的功能合并到主项目中去,但因为功能是多人开发,如果不能妥善保管好主项目中存储的代码及文件的话,将会存在丢失等情况出现,所以不能将主项目放到某一个人的本地电脑上,这时就需要有一个地方存储主项目,这个地方就是我们搭建在服务器上的git远程仓库,也就是在功能开始开发前,每个人要下载项目到本地的地方。操作时,使用git push origin 分支名称,将本次仓库存储的当前分支的修改推送至远程仓库中的对应分支中。

常用命令

仓库状态

# 初始化本地仓库,初始化后当前位置会出现隐藏目录.git
git init
# 查看当前git仓库的状态
git status

仓库操作

# 将文件添加到暂存区,将所有文件添加到暂存区用git add .
git add [file]
# 将暂存区文件退回到工作区,将所有文件退回可以用git rm -r --cached .
git rm --cached [file]
# 提交暂存区文件到本地仓库
git commit [file]
git commit -m [description] [file]

日志

# 查看git日志,--oneline每条日志显示一行
git log
# 切换版本
git reset --hard [version_index]

开发者信息

设置开发者信息,与远程库登陆帐密没有关系

# 设置仓库级别的,信息保存在.git/config中
git config user.name [username]
git config user.email [email]

# 设置全局级别的,信息保存在~/.gitconfig中
git config --global user.name [username]
git config --global user.email [email]

分支

# 查看所有分支,带*的为当前分支,-a查看本地和远程,-r查看远程分支,-v查看最后提交的分支
git branch
# 创建分支
git branch [branch]
# 切换分支
git checkout [branch]
# 删除分支,-d替换为-D是强制删除
git branch -d [branch]
# 将制定分支合并进入当前分支
git merge [branch]

远程仓库

# 查看所有远程仓库,-v同时显示URL
git remote
# 添加远程仓库
git remote add [remotename] [url]
# 删除远程仓库
git remote remove [remotename]
# 重命名远程仓库
git remote rename [oldname] [newname]

# 从远程仓库克隆代码
git clone [url]

# 从远程仓库获取更改
git pull [remotename] [remotebranch]

# 推送到远程仓库
# -f:强行推送覆盖远程
# -u:是--set-upstream的简写,简化以后push的命令不需要再次指定远程分支名
git push [remotename] [localbranch]:[remotebranch]
# 默认本地分支和远程分支同名
git push [remotename] [brach]

代理

# 使用Http代理
git config --global https.proxy http://127.0.0.1:7890
git config --global https.proxy https://127.0.0.1:7890
# 使用Socks5代理
git config --global http.proxy socks5://127.0.0.1:7890
git config --global https.proxy socks5://127.0.0.1:7890

# 只对 github.com 使用代理
git config --global http.https://github.com.proxy socks5://127.0.0.1:7890
git config --global https.https://github.com.proxy socks5://127.0.0.1:7890

git配置

# 查看当前仓库配置
git config --list
# 查看全局配置
git config --global --list

# 删除当前仓库配置,--global全局
git config --unset [key]

# 设置配置
git config [key] [value]
# 设置多value配置
git config --add [key] [value] 

常见问题

大小写不敏感

Git对文件名的大小写不敏感,例如:

# 可以通过git mv对文件进行重命名
git mv readme.md Readme.md
# 可以对当前仓库设置大小写敏感
git config core.ignorecase false
# 也可以设置全局大小写敏感
git config --global core.ignorecase false