git是分布式版本控制工具。一般分为:本地仓库和远程仓库。目前网上提供了一些代码托管服务:GitHub、Gitee、GitLab等。
优点
适合分布式开发,速度快、灵活,离线工作;
缺点
代码保密性差;比SVN更复杂;
安装
下载
git官网下载自己系统对应版本的安装包。
安装
右键,【以管理员身份运行】,【Next】,选择自己需要安装的目录,后续的所有选择均让其默认即可,不需要修改,无脑next即可。
注:
- 电脑名、路径名尽量不要用中文;
- 安装步骤-选择git组件时,默认的勾选项建议不要动,并且可以考虑以下3项的处理。分别为:创建桌面快捷方式、每天检查更新、将Git Bash配置文件添加到windows。
- 安装完成,点击Finish。(检验:右键,弹框是否包含Git命令快捷项。)
注册GitHub/GitLab账户
配置
检查
- 检查是否安装成功:
git --version
。未出现命令,则卸载重装; - 检查Git是否已经添加到系统的PATH环境变量中:
echo $PATH
。
如果没有Git安装路径的输出,则需手动将Git安装路径、Git的cmd文件路径添加到PATH环境变量中,如下:
信息配置
安装完Git,第一件事就是配置个人的【用户名】和【邮箱地址】(提交标记身份使用,非注册其它接管平台的用户名和邮箱哦,可任意配置)。相关使用:
git config
:git配置命令
--global
:配置参数,表示全局配置。
右键,【Git Bash Here】,输入以下命令行,配置个人信息:
git config --global user.name 用户名
git config --global user.email 邮箱地址
配置完成后,检查是否配置成功:
git config --list
#如果信息太多,可以输入 q 退出
出现以上内容,则表示注册成功。需要修改,则重复配置步骤即可。
生成SSH
SSH:加密的网络协议,使用了公钥加密算法+对称加密算法实现,主要用于远程登录、操作执行指令、传输文件等等操作,让用户通过不安全的网络连接到计算机并远程执行操作,而不必担心数据被窃取或篡改。
实现
命令行中输入生成密钥的命令:包含一个私钥和一个公钥。
- 私钥【id_rsa】:保存在本地计算机上;
- 公钥【id_rsa.pub】:复制到远程计算机上,用于对SSH连接进行加密。
// -t:密钥类型为RSA(非对称加密算法)
ssh-keygen -t rsa
生成过程中,会提示密钥保存路径、密钥文件名、密钥口令等信息,可接受默认值或自定义。
配置信息的时候,需要注意安装的【id_rsa】文件和【id_rsa.pub】文件路径位置哦~
查找【.ssh】文件位置,可使用命令:
~/.ssh
添加到GitHub/GitLab管理平台
- 头像 → Settings,找到【SSH and GPC keys】,点击【New SSH Key】添加公钥:
- 【title】可以自定义命名一个,将公钥【id_rsa.pub】文件中的内容招贴到key中,点击保存。
- 检查配置是否成功
右键 → 【Git Bush Here】,输入命令:
ssh -T git@github.com
即表示配置成功。
多平台多账户使用Git
方法一 切换用户名切换平台
1. 本地备份Github密钥
cd ~/.ssh
// 备份
mv id_rsa id_rsa_github
mv id_rsa.pub id_rsa.pub_github
2. 设置新的用户名、邮箱地址
git config --global user.name 用户名
git config --global user.email 邮箱地址
3. 生成新的密钥
ssh-keygen -t rsa -C 'xxxx@163.com'
4. 关联新的仓库
如果之前已经关联过A仓库,需要将其徐晓关联再关联新仓库,则需要先删除关联的origin的远程库:
git remote rm origin
关联新的仓库
git remote add origin git@github.com:xxxx/mock.git
方法二 取消全局配置
- 清除全局配置
git config --global --unset user.name 账户名
git config --global --unset user.email 邮箱地址
- 清除之前默认生成的密钥
rm ~/.ssh/id_rsa.pub
rm ~/.ssh/id_rsa
- 切换到对应项目的路径下,配置名称和邮箱
git config user.name 账户名
git config user.email 邮箱地址
- 生成SSH密钥及其存放文件
// -C 邮箱 -f 密钥对的文件名:表示以密钥对文件名作为注释
ssh-keygen -t rsa -C 邮箱 -f 密钥对的文件名
- 让git识别新生成的密钥
ssh-add 文件名
- ssh配置
在【~/.ssh】路径下查看是否有config文件,若无,创建一个,然后配置config文件内容
# 第一个github项目账号
Host first_project
HostName IPADDRESS OR DOMAIN eg.github.com
User first_user
IdentityFile 密钥对的文件名1
#第二个git项目账号
Host second_project
HostName IPADDRESS OR DOMAIN
User second_user
IdentityFile 密钥对的文件名2
以上步骤都完成配置后,多个git账号就可以使用了~
Git项目
本地项目推送
1. 创建本地仓库:新建【GitDemo】文件夹目录; 2. 本地仓库配置
(1)初始化:
git init
初始化完成,目录中会有一个【.git】文件夹。如果未展示,可在【查看】选项中勾选【隐藏的项目】,展示。
(2)添加项目文件
git add README.md
(3)commit
git commit -m "First commit files
(4)重命名当前分支(-M
:强制执行重命名)
git branch -M master
3. 关联远程仓库:(选择SSH方式生成远程仓库链接,避免使用HTTPS生成造成后续提交需要验证用户名和密码问题。)
git remote add origin git@github.com:166231/GitDemo.git
4. 推送
git push -u origin master
error: remote origin already exists.
一般情况下是clone下来的仓库,推送到自己的仓库出现的问题。解决办法:
1、git remote rm origin
,删除关联的origin的远程库;
2、git remote add origin https://gitee.com/xxxxxx.git
,关联自己的仓库
3、git push origin master
,推送到自己的仓库,完成~
远程仓库拉取
git clone 项目地址
Git使用
工作区、暂存区、版本库概念
- 版本库:【.git】文件夹,存储了很多配置、日志、文件版本等信息,一般是Git自己维护的;
- 暂存区:【index】文件,也可以叫做stage,存放临时修改文件的地方;
- 工作区:工作目录,就是和【.git】以及同级文件构成的工作目录;
Git工作区中文件的状态
- untracked、tracked:是否跟踪(纳入版本控制);
- Unmodified、Modified:是否修改;
- staged:已暂存状态
本地仓库操作
- git status: 查看文件状态
- git add: 将文件的修改加入暂存区
- git reset: 将暂存区的文件取消暂存或者是切换到指定版本
- git commit: 将暂存区的文件修改提交到版本库
- git log: 查看日志
远程仓库操作
- git remote: 查看远程仓库,添加
-v
参数可以查看具体路径; - git remote add: 添加远程仓库
- git clone: 从远程仓库克隆
- git pull: 从远程仓库拉取
- git push [remote-name] [branch-name]: 推送到远程仓库
分支操作
分支:一个HRAD的指针标记指向当前所在分支或者某个具体的提交记录。每次都会产生新的记录,master和HRAD会后移。
- git branch: 查看分支
- git branch -r: 列出所有远程分支
- git branch -a: 列出所有分支(本地+远程)
- git branch [name]: 创建分支
- git checkout [name]: 切换分支
- git push [shortName] [name]: 推送至远程仓库分支
- git merge [name]: 合并分支
注意: 合并分支,有可能存在合并冲突的情况。主要是由于多人同时修改了同一个文件的同一个位置,提交冲突造成的,此时可手动合并,处理冲突部分。
解决办法:
- 添加进入暂存使用
git add *
,将所有的文件都添加进暂存区,之后执行git commit -m "手动修改"
,将所有文件添加到本地仓库。 - 在
git commit -m "手动修改" xxx.txt
命令后面加一个-i
。
推送成功。
标签操作
- git tag:列出已有的标签;
- git tag [name]:创建标签
- git push [shortName][name]:将标签推送至远程仓库
- git checkout -b [branch][name]:检出标签
Git命令综合集
git init
:初始化git add xxx
:添加git add index.html
:将文件添加到暂存区git add css
:将目录添加到暂存区git add .
:将当前目录下的所有变化都暂存
git commit -m "提交的内容说明"
:将暂存区内容提交到版本库git log
:查看日志git log --oneline
:在一行显示简略信息
git status
:查看仓库变化,检查未提交的所有变更的文件状态git reset --hard 版本号
:回退版本:- 需要先查看版本号哦~
git reflog
:查看git所有操作记录,包含reset记录~
clear
:清屏ctrl+L
:另起一页git branch
:查看远程分支git branch -v
:查看本地+远程分支git branch 分支名
:新建分支git checkout 分支名
:切换分支git merge 目标分支名
:把目标分支下的所有记录合并到当前分支下git branch -d 分支名
:删除分支(-D
:强制删除)