文章目录
Git入门和使用实践
一、前言
- 环境说明
- 操作系统:Windows 10 专业版
- Git 版本:2.30.0
- 简介
- Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。
Git 官网:https://git-scm.com/
Git 中文网:http://www.git-scm.com.cn/
Learn Git Branching :https://learngitbranching.js.org/?demo=&locale=zh_CN
廖雪峰官网:https://www.liaoxuefeng.com/wiki/896043488029600/
Git flow:https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
GitHub 常用忽略文件的配置:https://github.com/github/gitignore
二、正文
1.本地仓库
基础知识
- 项目文件夹内为
工作区
- git init 后,产生
.git
文件夹作为版本库
- 工作区内的一个文件,通过 git add 将文件添加到
暂存区
,再通过 git commit 将文件提交到本地仓库
安装好 git 软件后,项目文件夹内,右击鼠标 -
Git Bash Here
运行指令默认
.git
文件夹为隐藏项目
设置邮件地址和用户名
- 用于提交项目时作为版本信息的一部分
命令 | 说明 |
---|---|
git config -l | 查看配置列表 |
git config --global user.email “you@example.com” | 全局配置中设置邮箱 |
git config --global user.name “Your Name” | 全局配置中设置用户名 |
将文件添加到本地仓库
命令 | 说明 |
---|---|
git status | 查看状态 |
git add | 添加到暂存区 |
git add . | 点号表示所有文件,即将当前目录所有文件添加到暂存区 |
git commit -m “first commit” | 将暂存区的文件提交到本地仓库,-m 表示填写版本备注信息 |
版本状态
状态 | 说明 |
---|---|
nothing to commit, working tree clean | 没有需要提交的文件,即没有文件或文件已全部提交 |
Untracked files | 创建文件后,未添加到暂存区 |
new file | 文件首次添加到暂存区,未提交 |
modified | 文件之前已提交,当前已对文件进行了修改 |
版本切换
- 每次提交成功后,都会产生一个 ID
命令 | 说明 |
---|---|
git log | 查看提交的日志信息,包括 ID、作者、提交时间、备注信息和 HEAD 指针指向 |
git log --pretty=oneline | 简化提交的日志信息,包括 ID、备注信息和 HEAD 指针指向 |
git reset --hard [ ID ] | 切换到指定 ID 的版本,ID 可截断 |
git reset --hard HEAD^ | 回退到上一个版本 |
git reset --hard HEAD^^ | 回退到上两个版本 |
git reflog | 查看所有提交的日志信息,避免回退后,无法找到之前的 ID |
版本撤销
命令 | 说明 |
---|---|
git checkout – | (未提交到暂存区)撤销文件的修改,即将修改内容丢弃 |
git reset HEAD | (已提交到暂存区)将误提交暂存区的文件回退到工作区 |
git restore --staged | (已提交到暂存区)将误提交暂存区的文件回退到工作区 |
2.分支
基础知识
git flow:https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
- 执行
git status
时会显示HEAD
指针指向,标识 HEAD 的版本,即为当前工作区的版本
HEAD
指针同时会指向默认的分支:master 分支
- 一般的,企业会将 master 分支作为发布分支,不做开发,只做合并;而进行开发工作时,需要迁出开发分支(dev),完成开发后,合并到 master 分支
- 本地仓库迁出分支可以进行模块开发或者 bug 修复,远程仓库迁出分支可以进行多人多模块开发
基础操作
命令 | 说明 |
---|---|
git checkout -b [ 分支名称 ] | 迁出指定名称的分支 |
git branch | 查看当前所处分支 |
git checkout [ 分支名称 ] | 切换到指定名称的分支 |
git branch -d [ 分支名称 ] | 删除分支 |
git branch -D [ 分支名称 ] | 强制删除分支 |
git merge [ 分支名称 ] | 合并分支 |
冲突解决
- master 分支中合并其它分支,需要手动修改冲突的文件,然后,在 master 分支上执行 add 和 commit 操作即可
3.远程仓库
远程仓库网站
网站 | 网址 |
---|---|
github | https://github.com/ |
码云 | https://gitee.com/ |
Code China | https://codechina.csdn.net/ |
gitlab(自托管的 git 项目仓库) | https://gitee.com/mirrors/gitlab (镜像库) |
关联远程仓库
- 需要先在远程仓库中创建一个新的仓库
- 设置中,可以删除仓库
创建SSH-Key
- 仓库设置中,找到 SSH and keys 菜单,填写本地电脑生成的 SSH Public Key
- ssh key 生成目录:C://User/[系统用户名]/
.ssh
;远程仓库填写id_rsa.pub
的内容
命令 | 说明 |
---|---|
ssh-keygen -t rsa -C “testgit@163.com” | 生成 ssh key |
关联和推项目
命令 | 说明 |
---|---|
git remote | 查看本地仓库和远程仓库的关联信息 |
git remote -v | 查看本地仓库(origin)对应远程仓库的链接 |
git remote add origin [远程仓库链接<.git>] | 本地仓库(origin)和远程仓库实现关联 |
git push -u origin master | 推本地仓库(origin)的文件到远程仓库(master) |
git push | 推操作,执行过一次 -u 的 push 后,可省略关联信息 |
拉项目
命令 | 说明 |
---|---|
git clone [远程仓库链接<.git>] | 克隆远程仓库到本地环境 |
git pull | 拉操作,用于更新项目 |
4.配置
基础知识
- 仓库配置、全局配置和系统配置,优先级别(就近原则):仓库配置 > 全局配置 > 系统配置
- 仓库配置位于工作区 .git 文件夹下的
config
文件 - 全局配置位于 C://User/[系统用户名]/ 文件夹下的
.gitconfig
文件 - 系统配置位于 git 安装目录下 etc 文件夹里面的
gitconfig
文件
查看和编辑
命令 | 说明 |
---|---|
git config -l | 查看配置列表 |
git config --local -l | 查看仓库配置列表 |
git config --global -l | 查看全局配置列表 |
git config --system -l | 查看系统配置列表 |
git config --local -e | 编辑仓库配置 ;-e 表示编辑 |
git config --global --add user.name “Your Name” | 全局配置新增配置项;--add 表示新增配置项 |
git config --global --unset user.name | 全局配置取消配置项;--unset 表示取消配置项 |
配置别名
- 简化操作命令
命令 | 说明 |
---|---|
git config --global alias.st status | 将 git status 命令简化为 git st |
git config --global alias.ol ‘log --pretty=oneline’ | 将 git log --pretty=oneline 简化为 git ol |
5.标签
- 打标签,设置版本号;解决版本库 ID 过长不方便记忆的问题
命令 | 说明 |
---|---|
git tab | 查看标签列表 |
git tag [版本号] [ID] | 打标签,绑定版本号和 ID |
git tag [版本号] [ID] -m “备注信息” | 打标签,并添加备注信息 |
git tag -d [版本号] | 删除标签 |
6.忽略文件
github 常用忽略文件的配置:https://github.com/github/gitignore
-
忽略工作区中的文件,即忽略那些不需要被 git 管理的文件
-
解决方法:
工作区根目录下创建
.gitignore
文件;然后,配置文件或文件类型;
最后,将忽略文件提交到本地仓库中
三、其它
1.命令行指引
Git 全局设置
git config --global user.name "JotaX"
git config --global user.email "test@163.com"
创建一个新仓库
git clone git@test.net/springboot-project.git
cd springboot-project
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
推送现有文件夹
cd existing_folder
git init
git remote add origin git@test.net/springboot-project.git
git add .
git commit -m "Initial commit"
git push -u origin master
推送现有的 Git 仓库
cd existing_repo
git remote rename origin old-origin
git remote add origin git@test/springboot-project.git
git push -u origin --all
git push -u origin --tags