git版本管理学习入门


前言

详细学习可参考以下网站:
1、https://www.w3cschool.cn/git/git-branch.html
2、https://www.runoob.com/git/git-pull.html
3、https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE
4、https://blog.csdn.net/qq_32452623/article/details/78355976
5、https://learngitbranching.js.org/?locale=zh_CN


一、本地创建仓库,上传到GitHub

先在本地创建仓库,并在GitHub上创建对应的仓库,保存对应的地址:https://github.com/XXX/XXXXX.git。之后执行以下命令:

git init # 初始化,生成.git文件夹
git config user.name userName # 配置GitHub的用户名和地址
git config user.email userName@gmail.com
git remote add origin https://github.com/XXX/XXXXX.git # 添加远程仓库https地址,这个地址需要在GitHub网站上对应的事先创建的仓库的地址
git add . # 添加当前目录中的所有文件到git中,以方便后面的push
git commit -m "remote commit"
git push -u origin main # 这一步可能出错
git pull # 如果GitHub远程仓库已经有内容了需要先pull

  • git pull说明
    – 如果GitHub远程仓库已经有内容了需要先pull,进行同步,该命令是从远程获取代码并合并本地的版本,是 git fetch 和 git merge FETCH_HEAD 的简写。
    – git pull 的正常命令模式是:git pull <远程主机名> <远程分支名>:<本地分支名>;意思是将<远程主机名> 上的<远程分支名>分支拉取到本地分支<本地分支名>
    – 更新操作:git pull 或者 git pull origin
执行完上述命令后就可以在每次需要更新同步新版本(保存更改)时,执行以下代码:
git status # 查看当前修改文件,没问题执行下一步
git add . # 添加所有更改文件,其中的'.'可以换成相应的更改文件
git commit -m "your descriptions" # 注意在push之前一定要commit 否则将会出错:
git push -u origin main #或者 git push origin main:main

  • git push <远程主机名> <本地分支名>:<远程分支名>说明
出了可以通过上述

二、创建分支和打标签

1.创建分支

git branch -a # 查看当前git所有的分支
git branch myBranchName # 创建一个名为myBranchName的分支
git checkout -b branchName2 # 创建新分支branchName2并切换到该分支下
git checkout branchName # 切换到分支branchName
git branch -M newName # 将当前分支的名字改为newName
git branch -d branchName # 删除本地分支branchName
git push origin branchName # 将分支branchName上传到GitHub上

代码如下(示例):

2.打标签

像其他版本控制系统(VCS)一样,Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点( v1.0 、 v2.0 等等)。

git tag # 列出当前所有的标签,或者git tag -l
git tag -a v0.0 -m "version0.0" # 创建附注标签v0.0 ,附注说明为: "version0.0"
git show v0.0 # 可以看到标签v0.0的信息和与之对应的提交信息
git tag v0.0-lw  # 创建轻量级标签 v0.0-lw
git log --pretty=oneline # 查看提交历史
git push origin v0.0-lw # 共享标签v0.0-lw到远程(GitHub)
git push origin --tag # 共享所有的标签

git tag -d v0.0 # 删除标签,这样并不会同步到远程的GitHub上,因此需要执行以下命令之一
git push origin :refs/tags/v0.0 # 或者:git push origin --delete v0.0
 


三、git的常用操作以及解释

1 git commit

git的提交记录尽可能的轻量,保存的是本地的快照,这个记录git尽量确保轻量,因此主要保存的是上一节点不同之处。同时保存历史版本,因此每一笔记录都存在parent节点。

# 一个git commit 代表一笔修改
git commit

2 git branch

分支是非常轻量的。为什么这么说呢?因为分支只是简单的指向某一个提交记录,并不会占用内存。使用分支意味着是想在这个分支所指向的提交记录以及其所有的parent下开始新的创作和提交。

# 创建新的分支名为 branchName
git branch branchName
# 切换到分支branchName上
git checkout branchName

3 git merge

合并两个分支。即通常是将某个分合并到主分支。
合并分支图示
如上图所示,要将bugFix分支合并到main分支,可以执行如下命令:

git merge bugFix

4 git rebase

rebase的实质是复制一系列的提交记录,然后在某个地方逐一的放下去。
git rebase 图示
将C3所在分支bugFix rebase到main分支

# 切换到bugFix分支
git checkout bugFix
# 将main分支rebase到bugFix
git rebase main

5 分离HEAD

git的相对引用

# 将HEAD向上移动一个提交记录
git checkout ^
# 将HEAD向上移动n个提交记录
git checkout ~n

在这里插入图片描述
如图将HEAD向上移动到C0,可执行如下指令

# 执行如下命令4次
git checkout HEAD^

# 或者执行如下命令
git checkout HEAD~4

强制修改分支位置:

## 将main分支强行改为在C0处
git branch -f main HEAD~4/C0

6 git reset和git revert,撤销变更

git reset C3# 是针对本地修改,不会同步到远程分支
git revert HEAD

在这里插入图片描述
如图所示,C3是通过git reset 实现的
C2’是git revert 实现的。
两者的区别:

git reset 直接撤销回退到上一个某个版本
git revert HEAD是将要撤销的C2记录保留,并完全复制一个C1到C2‘作为新的改变

7 整理提交记录


在这里插入图片描述
如上图所示要将C2和C3提交整理到main分支下,可执行如下指令

git cherry-pick C2 C3

8 git rebase -i和git cherry-pick

git rebase -i是git rebase --interactivation的缩写。
该命令的作用是将某个branch下的提交删除合并或者整理重新排序,如下图所示为重新排序之后的示意图。
在这里插入图片描述

# 实现上述的命令是这样的(HEAD 和 main初始位置在C5)
git rebase -i HEAD~4
# 然后根据UI界面进行调整。

9 git tag给某个记录打个tag

该命令是对某个提交打上永久的标签。以下命令是给ref引用打上名为’tagName’的标签

git tag tagName <ref>

给某个tag添加描述:

git describe <ref>

<ref>可以是任何能被 Git 识别成提交记录的引用,如果你没有指定的话,Git 会使用你目前所在的位置(HEAD)
输出格式如下:

<tag>_<numCommits>_g<hash>

tag 表示的是离 ref 最近的标签, numCommits 是表示这个 ref 与 tag 相差有多少个提交记录, hash 表示的是你所给定的 ref 所表示的提交记录哈希值的前几位。

当 ref 提交记录上有某个标签时,则只输出标签名称
example
如图所示如果分别执行如下命令:

git describe main
# 输出:
v1_2_gC2

git describe side
# 输出:
v2_1_gC4

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值