Linux 下操作版本管理工具 Git

1. 安装 Git ;

# 安装
yum -y install git
# 配置用户信息
git config --global user.name "username"
# 查看命令
git --help 

# 另:
# 1. Windows Git:https://git-scm.com
# 2. 客户端:https://www.sourcetreeapp.com

2. 本地仓库创建和工作流;

# 进入相关目录
cd /usr/local/src
# 创建项目文件夹
mkdir demo
cd demo
# 初始化项目,多出一个 .git 文件
git init
ls -a
# 创建新文件到工作区
echo "git test" >> test.txt

# 文件添加暂存区,会留下记录
git add test.txt

# 暂存区的文件不提交到本地仓库,恢复到工作区
git reset head test.txt
# 工作区变干净(修改的内容撤销)
git checkout -- test.txt

# 暂存区文件提交到本地仓库,并写下注释(会有 commit 信息)
git commit -m 'comment'
[master(根提交) d505357] test.text 1
1 file changed, 1 insertion(+)
create mode 100644 test.txt

# 提交到本地仓库后的回滚
git log
commit d5053578c1e70ed44aca185404a72c3e08194bc6
Author: hualaoshuan
Date:   Wed Nov 6 21:17:07 2019 +0800
# 最终仓库和和暂存区的文件都回滚到前一次的提交
git reset --hard d5053578c1e70ed44aca185404a72c3e08194bc6

# 清空本地仓库
git rm test.txt
git commit -m 'comment'

# 查看状态
git status

## 单文件操作
# 查看文件与上一个版本的变化
git diff test.txt

# 查看文件的历史版本
git log test.txt
commit d5053578c1e70ed44aca185404a72c3e08194bc6
Author: hualaoshuan
Date:   Wed Nov 6 21:17:07 2019 +0800

# 文件恢复到指定版本
git checkout d5053578c1e70ed44aca185404a72c3e08194bc6 test.txt

# 文件回复到上一个版本
git checkout -- test.txt

在这里插入图片描述

3. 远程操作;

3.1 远程仓库;

  • 创建 SSH key
# 1. 打开本地终端
# 注意:邮箱必须是注册 github 用的邮箱
ssh-keygen -t rsa -C "[email protected]"
# 返回如下内容
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:T87*************On5 [email protected]
# 返回内容结束

# github 上用到的是公钥 id_rsa.pub
ls
id_rsa  id_rsa.pub  known_hosts
# 查看 id_rsa.pub
cat id_rsa.pub
# 拷贝 id_rsa.pub 中的内容如下
ssh-rsa AAAA**************************ERf [email protected]

# 2. 登录 github 官网,右上角头像点击,选择 settings - SSH and GPG keys
# 到达页面:https://github.com/settings/keys,点击 new SSH key
# key 填写之前本地 id_rsa.pub 里的内容
ssh-rsa AAAA**************************ERf [email protected]

# 3. 测试本地和 github 是否连通
ssh -T [email protected]
Hi hualaoshuan! You've successfully authenticated, but GitHub does not provide shell access.
  • 添加远程仓库
# 1. 访问 https://github.com/new 创建仓库 gitdemo,设为 public

# 2. 添加仓库(方法 1)
# 创建本地仓库目录
cd /usr/local/src/
mkdir gitdemo
cd gitdemo
# 创建 README 文件
echo "# gitdemo" >> README.md
# 初始化版本库
git init
# 工作区文件添加到暂存区,也就是索引
git add README.md
# 添加到 master 分支版本库的目录树里
git commit -m "first commit"
# 本地仓库和远程仓库关联
git remote add origin https://github.com/hualaoshuan/gitdemo.git
# 推送至远程
# -u 默认把本地 master 和远程 master 关联,第二次直接 git push
git push -u origin master

# git 使用二次验证,每次 git push 都需要输入用户名和密码,如果不想每次输入,
# 可以使用 credential.helper(凭证助手)来记住用户名和密码
git config credential.helper store
# 也可以设置记住时间
git config --global credential.helper 'cache --timeout 7200'  
git push https://github.com/hualaoshuan/gitdemo.git
# 然后输入用户名和密码
Username for 'https://github.com': hualaoshuan
Password for 'https://[email protected]': ******
  • 克隆仓库:在日常工作中,需要多人协作开发项目,需要将远程仓库里的代码克隆一份到本地,然后在本地进行开发。同时在开发完成之后需要将本地内容推送到远程仓库中,这样才能在项目中进行协作开发。意思就是需要将远程代码拷贝一份到本地,基于本地代码进行开发。
# 进入目录
cd /usr/local/src/demo
# git clone 之前创建的项目 gitdemo
git clone https://github.com/hualaoshuan/gitdemo.git

3.2 标签管理;

  • 在日常工作中,当需要发布一个新的版本,通常是在版本库中打一个标签,这样就确定了该标签对应的版本时刻,以后某一个时刻想回滚到当前版本,就可以直接通过标签来取出来。同时创建和删除标签的速度特别快。项目上线的时候想回滚版本是通过标签而不是通过分支或者别的 commit message 回滚。
# 基础命令
# 查看所有标签: git tag
# 创建标签: git tag name
# 指定提交信息: git tag -a name -m "comment"
# 删除标签: git tag -d name
# 标签发布: git push origin name

# 实例:
# 进入项目目录
cd /usr/local/src/gitdemo
# 添加新文件
echo "new code" >> test
# 放入暂存区
git add test
# 添加到 master 分支版本
git commit -m "new code commit"
# 推送远程仓库
git push

# 查看标签
git tag
# 创建本地标签
git tag v1.0.1
# 推送标签到远程仓库
git push origin v1.0.1

# 删除本地标签
git tag -d v1.0.1
# 删除远程标签
git push origin :refs/tags/v1.0.1

3.3 分支管理。

  • 场景:需要开发一个新功能,需要两周才能完成。此时已经写了 50% 的代码,如果立即提交,由于代码还没写完,不完整的代码会导致系统的各种问题。如果写完后再提交,就会有丢失每天进度的风险。有了分支之后就能解决问题,只需要创建自己的分支,在自己的分支上工作。在自己的分支上想怎么提交都行。等开发完成之后再一次性合并到原来的分支,这样安全又不影响工作。
    在这里插入图片描述
# 进入项目目录
cd /usr/local/src/gitdemo
# 新建项目目录
mkdir branch-demo
cd branch-demo
# 初始化仓库
git init
# 添加新文件
echo "first branch demo" >> branch.txt
# 添加到暂存区
git add branch.txt
# 提交到本地仓库
git commit -m "first branch commit"

# 创建新分支 feature_x
git branch feature_x
# 查看所有分支
git branch 
# 切换到 feature_x 分支
git checkout feature_x
# 基于 feature_x 分支实现新代码
echo "new feature added" >> branch.txt 
git add branch.txt
git commit -m "new feature add"
# 新代码合并到 master 分支
git checkout master
git merge feature_x
# 删除 feature_x 分支
git branch -d feature_x
发布了119 篇原创文章 · 获赞 12 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/hualaoshuan/article/details/102923188