Git
1. 概述
Git是免费开源的版本控制工具,能够高效处理小型到大型的各种项目
1.1 版本控制工具
集中式版本控制工具:CVS、SVN…
分布式版本控制工具:GIT、Bazaar…
1.2 工作机制
2. 安装
官网:https://git-scm.com/
apt install git
git --version # 查看版本号
3. Git常用命令
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户邮箱 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史纪录 |
git reset --hard 版本号 | 版本穿梭 |
3.1 设置用户签名
git config --global user.name 用户名
git config --global user.email 邮箱
在执行命令的目录下.gitconfig中可以查看自己设置的用户名和邮箱
[user]
name = zbf
email = 798599414@qq.com
用户签名与登录GIthub的账号没有关系
3.2 初始化本地库
git init
成功后会在目录下生成一个**.git**文件夹
3.3 查看本地库状态
git status
会显示:
On branch master(当前本地库所在的分支)
No commits yet
nothing to commit (create/copy files and use “git add” to track)
3.4 添加暂存区
git add 文件名
3.5 提交到本地库
git commit -m "日志信息" 文件名
pfomic@DESKTOP-5FG49AC MINGW64 /d/Git-Space/git-demo (master)
$ git commit -m "1.1" hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
[master (root-commit) 9021fd2] 1.1
1 file changed, 10 insertions(+)
create mode 100644 hello.txt
3.6 查看历史记录
git reflog (简略版)
git log (详细版)
pfomic@DESKTOP-5FG49AC MINGW64 /d/Git-Space/git-demo (master)
$ git reflog
9021fd2 (HEAD -> master) HEAD@{0}: commit (initial): 1.1
commit 9021fd2d721efdcd43b31baa1cf47fb937098b73 (HEAD -> master)
Author: zbf <798599414@qq.com>
Date: Tue Sep 14 16:27:20 2021 +0800
1.1
版本穿梭
- 使用
git reflog
查看版本号 - 使用
git reset --hard 版本号
进行版本穿梭
再次查看记录会发现指针已经指向指定的版本号,并且最新版本后做出了相关的连接解释
4. 分支
在版本控制过程中,同时需要推进多个任务,是每个任务单独创建分支,从而把自己的工作与主线工作分离开。在开发自己的分支时不会影响到主线的工作。
优点:并行推进多个功能开发,提高开发效率,如果一个分支开发失败不会影响到其他主线或者分支
基本操作
命令 | 作用 |
---|---|
git branch -v | 查看分支 |
git branch 分支名 | 创建分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 使指定分支合并到当前分支上 |
4.1 查看分支
git branch -v
$ git branch -v
* master 9b7d482 1.2
4.2 创建分支
git branch 分支名
pfomic@DESKTOP-5FG49AC MINGW64 /d/Git-Space/git-demo (master)
$ git branch hot-fix
pfomic@DESKTOP-5FG49AC MINGW64 /d/Git-Space/git-demo (master)
$ git branch -v
hot-fix 9b7d482 1.2
* master 9b7d482 1.2
4.3 切换分支
git checkout 分支名
windows系统下,切换分支后最后面的小括号会变成当前分支的名字
还可以使用git branch -v
命令进行查看,会发现*
指向了当前的新分支,且名字变成绿色
并且.git/HEAD文件夹中也变为了hot-fix
在hot-fix修改文件
4.4 合并分支
git merge 分支名
例:将hot-fix 合并到master中
# 先转换到master中
pfomic@DESKTOP-5FG49AC MINGW64 /d/Git-Space/git-demo (hot-fix)
$ git checkout master
Switched to branch 'master'
# 在进行合并
pfomic@DESKTOP-5FG49AC MINGW64 /d/Git-Space/git-demo (master)
$ git merge hot-fix
Updating 9b7d482..dbab7ea
Fast-forward
hello.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
冲突合并:
当两个分支在同一个文件有两套不同的修改,Git无法决定用哪个,需要人为决定代码内容。
决定完代码后需要重新提交暂存区,提交本地库但git commit后面不能加文件名
5. GitHub操作
常用命令
命令 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
5.1 创建远程库
5.2 创建远程库别名
git remote -v # 查看别名
git remote add 别名 远程地址 # 创建别名
pfomic@DESKTOP-5FG49AC MINGW64 /d/Git-Space/git-demo (master)
$ git remote add git-demo https://github.com/798599414/git-demo.git
pfomic@DESKTOP-5FG49AC MINGW64 /d/Git-Space/git-demo (master)
$ git remote -v
git-demo https://github.com/798599414/git-demo.git (fetch)
git-demo https://github.com/798599414/git-demo.git (push)
5.3 推送分支
git push 别名 分支 # 最小单位为分支
pfomic@DESKTOP-5FG49AC MINGW64 /d/Git-Space/git-demo (master)
$ git push git-demo master
Enumerating objects: 30, done.
Counting objects: 100% (30/30), done.
Delta compression using up to 4 threads
Compressing objects: 100% (20/20), done.
Writing objects: 100% (30/30), 2.15 KiB | 313.00 KiB/s, done.
Total 30 (delta 9), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (9/9), done.
To https://github.com/798599414/git-demo.git
* [new branch] master -> master
5.4 拉取
git pull 别名 分支
pfomic@DESKTOP-5FG49AC MINGW64 /d/Git-Space/git-demo (master)
$ git pull git-demo master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 647 bytes | 34.00 KiB/s, done.
From https://github.com/798599414/git-demo
* branch master -> FETCH_HEAD
8cb0c2a..85eec35 master -> git-demo/master
Updating 8cb0c2a..85eec35
Fast-forward
hello.txt | 1 +
1 file changed, 1 insertion(+)
拉取后自动上传本地库
5.5 克隆
git clone 链接
需要先获取到代码的链接,再进行克隆
克隆不需要登陆账号
克隆完会自动初始化本地库,建立别名
5.6 团队合作
团队内协作
先要请进入团队
发送邀请函
接受邀请
跨团队协作
先找到对方团队的github项目,点击fork叉到自己团队下
修改代码完成后向对方团队发送拉取请求
对方团队操作:
5.7 SSH免密登录
生成公钥
ssh-keygen -t rsa -C GItHub用户名
账户设置
使用ssh拉取代码