提示:这篇文章用于增加对Git的理解和基本使用
一、Git是什么
Git是一个用于实现项目版本控制的版本控制器,通过仓库建立分支来实现对项目不同版本的存储和切换,从而能够实现版本的回溯和控制。
二、关于Git的基本结构
Git大体上分为四个结构:工作区,暂存区,本地仓库(版本库),远程仓库
(1)工作区
所谓工作区,就是项目放置的位置。直白的说就是 .git 所在文件夹,就是你的工作区
(2)暂存区
暂存区英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
(3)本地仓库
本地仓库(版本库)用于存储各种版本(分支)的信息。直接点,.git 文件就是你的版本库,其中有一个 HEAD 文件,存储着用于指向当前分支的游标,通过这个游标就可以切换到版本库中存储的各个版本
(4)远程仓库
这个很好理解,就是一个服务器存贮着你的各种项目,像国内的 gitee ,国外的 github , gitlab 等等
整个运作过程:首先是创建一个版本库,通过命令 git add
添加到暂存区,然后通过命令 git commit -m "备注"
添加到版本库,最后通过命令 git push
推送到远程仓库
三、Git的使用
1.安装教程
详细的安装教程参考下面链接(这位博主写得非常详细):
链接https://blog.csdn.net/mukes/article/details/115693833
2.设置Git用户信息
首先 WIN + R 打开 运行,输入 cmd 代开 控制台
输入:
git config --global user.name "user"
git config --global user.email user@user.com
所谓 "user"
就是你的用户名,可以任意填,但最好用英文且没有空格(好吧主要是其他的我没试过,不知道会不会出bug),(记得要加双引号)
user@user.com
就是写你的个人邮箱
3.配置密钥ssh
比如说我的远程仓库使用 gitee
首先在 控制台 输入
ssh-keygen -t rsa -C "youremail@example.com"
"youremail@example.com"
即你的个人邮箱 (记得加引号),记得是你注册 gitee 的邮箱
然后一路按回车就可以了
ssh-keygen -t rsa -C"youremail@example.com"`
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tianqixin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): # 直接回车
Enter same passphrase again: # 直接回车
Your identification has been saved in /Users/tianqixin/.ssh/id_rsa.
Your public key has been saved in /Users/tianqixin/.ssh/id_rsa.pub. #这里看你的密钥放在那里
The key fingerprint is:
SHA256:MDKVidPTDXIQoJwoqUmI4LBAsg5XByBlrOEzkxrwARI youremail@example.com
The key's randomart image is:
+---[RSA 3072]----+
|E*+.+=**oo |
|%Oo+oo=o. . |
|%**.o.o. |
|OO. o o |
|+o+ S |
|. |
| |
| |
| |
+----[SHA256]-----+
找到id_rsa.pub文件后打开,将里面的东西全部复制,这就是你的密钥,登录 gitee ,点击设置->ssh公钥,然后将密钥复制上去,点击确定即可
4.创建仓库
进入你的项目文件(项目的根目录),按住 shift 点击右键就可以打开 powershell ,然后输入
git init
回车后你就可以看到文件夹中多了一个 .git 文件,这个就是你的 git 版本库
5.与远程仓库建立连接
进入你的 gitee 项目仓库,点击 克隆->ssh,点击 复制 就能得到项目仓库的 URL
在 powershell 输入
git remote add [name] [url]
其中[name]
是你为远程仓库起的名字,(注意要去掉[ ]符号),而[url]
就是你在 gitee 中复制的地址
其他相关的命令
git remote rm name # 删除远程仓库
git remote rename old_name new_name # 修改仓库名
git remote -v #查看远程仓库
6.推送本地项目到远程仓库
(1)git add 可以把工作区文件添加到暂存区
命令有注意:实际操作中[ ]不要加:
添加一个或多个文件到暂存区:
git add [file1] [file2] ...
添加指定目录到暂存区,包括子目录:
git add [dir]
添加当前目录下的所有文件到暂存区:
git add .
(2)git commit 命令将暂存区内容添加到本地仓库中
提交暂存区到本地仓库中:
git commit -m "message"
window使用双引号
提交暂存区的指定文件到仓库区:
git commit [file1] [file2] ... -m "message"
-a 参数设置修改文件后不需要执行 git add 命令,直接来提交
git commit -a
(3)git push 提交到远程仓库
命令格式如下:
git push 远程主机名 本地分支名:远程分支名
如果本地分支名与远程分支名相同,则可以省略冒号:
git push 远程主机名 本地分支名
删除主机的分支可以使用 --delete 参数,以下命令表示删除 origin 主机的 master 分支:
git push origin --delete master
(4)git pull 获取远程仓库
git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写。
命令格式如下:
git pull 远程主机名 远程分支名:本地分支名
将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
如果远程分支master是与当前分支合并,则冒号后面的部分可以省略。
git pull origin master
(5)本地分支管理
查看分支
git branch
如果要查看全部分支(包括远程仓库的分支)添加属性 -a
git branch -a
添加分支
git branch branchname
branchname 为要创建的分支名
切换分支
git checkout branchname
git checkout -b branchname #创建新分支的同时切换到该分支下
删除指定分支
git branch -d branchname
融合分支
假设现在有三个分支a,b,c,目前所在的分支是c,如果想要合并a,b两个分支
git checkout a #从分支c切换到分支a或b
git merge b #把分支b合并到a
实际上合并后,分支b依然存在,但是b中更新的内容会合并到a中