git的简单学习总结

前言

之前在帮一些师傅弄东西的时候需要直接通过git上传上去 但是有时候总会遇到冲突或一些问题,然后git之前没有真正学过只会那么几个简单的操作,所以每次遇到都要去谷歌 ,蛮麻烦的干脆学一下好了。

快速上手

这几行基本满足普通的上传操作了

初次使用

git init git本地仓库初始化

git add . 将所有的文件加入到仓库之中

git commit -m "新的仓库"将add的代码commit到新的仓库里面

在github上进行项目的创建

git remote add origin github的项目链接 将本地的仓库关联到远程到仓库上去(origin是远程仓库的名字默认是origin)

git push -u origin master 将代码上传到远程仓库

合作完成github上代码的更新

git pull 拉取最新的分支

git add . 添加到仓库

git commit -m "说明" 提交更新到缓冲区

git push origin master 推送到github 进行更新

上传了不想上传的信息

首先使用 git log 查看commit_id 并看好要回滚的commit_id

然后使用git reset 进行一个回滚 回滚之前一定要做好备份

git reset --hard (需要恢复到前一个到commit_id)

没有push要进行撤回

来源:https://blog.csdn.net/yhl_jxy/article/details/82846546?depth_1.utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

git reset --hard id 

完成撤销,同时将代码恢复到前commit_id 对应的版本,强制回滚到之前的版本。

git reset id 

完成撤销,停留在当前版本,不对代码修改进行撤销,可以直接通过git commit重新提交对本地代码的修改。

Git学习笔记

因为git学的比较基础,所以笔记有可能会比较简陋还请各位见谅
git的出生的前因后果我就不说了哈
大家感兴趣的话可以去廖雪峰老师的网站去看看
https://www.liaoxuefeng.com/wiki/896043488029600/896827951938304
git是一个分布式版本控制系统,github呢则是目前最大的git服务器托管商~

创建版本库(初始化)

git的控制都是通过.git来进行实现的,所以我们要现在我们的文件夹中进行git的”初始化”
通过 git init 来初始化我们的仓库,可以看到我们在空的文件夹中初始化了我们的Git仓库

image.png

基本结构

从之前的快速上手可以看出来 我们在进行代码的上传需要先进行两步操作

  • git add . 这里最后的 . 其实就是代表当前的文件夹里的所有文件(这样当我们有多个文件修改的话就不用一一添加了)
  • git commit -m "说明"

最后我们再push到我们的远程仓库,但是这之间是为什么呢?
这里我引用廖雪峰老师的图片。
image.png
工作区其实就可以理解为我们本地的这个文件夹,stage就是暂存区,master就是我们的一个分支(分支后面会进行解释)

我们执行add操作其实就是将我们工作区的文件的修改添加到暂存区

然后通过commit命令提交到我们当前的分支

最后我们通过git push origin master推送到我们的github上 这里的origin就是我们的远程仓库的名字,master就是我们的分支

接下来简单的举一个例子:
我在工作区新创建了一个1.txt文件,然后我们先 git status 查看一下我们的git的状态

image.png

很贴心的说出来我们没有提交,我们目前位于的分支,然后提示我们要利用git add建立跟踪
既然都这么说了我们就继续吧!

image.png

执行了add命令之后我们已经建立了跟踪,我们的文件已经添加到了暂存区了,所以下一步我们应该要把我们暂存区中的文件提交到我们的当前的分支也就是master

image.png

现在我们已经把暂存区中的所有文件都提交到我们的分支了,所以我们暂存区中已经没有文件了,所以git status查看的时候说 无文件提交,干净的工作区

最后我们git push origin master
这样我们简单的流程就走完了

撤销 和删除

在我们正常使用的时候总会遇到这些情况

我们add到暂存区了 但是发现有问题 需要从暂存区进行一个撤回

git reset命令来取消我们的暂存

下面我们来简单的看一个例子:

image.png

可以看到我们通过 git reset 将文件从暂存区取消了

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本

但是可以看到提示 git restore –staged 好像也可以我也来试试
image.png
这么一看好像很多命令都可以 ,其实按照提示的命令来好像就可 233

我们已经commit了 但是想撤销

image.png
首先我们已经把文件提交到分支上了那么这时候我们想要退回应该如何做呢
这时候我们通过git reset HEAD~来进行撤销

image.png

从上图不难看出 ,我们通过命令将commit上去的代码撤销掉了
git reset HEAD~ 意思就是退回到上一个最新的commit_id

如果我们已经push上去了应该如何做呢

这样的话我们就需要进行回滚操作了 ,有时候我们有可能一不小心把我们的敏感信息进行上传,但是如果单纯的提交一个新的删除版的话是意义不大的,因为之前的commit_id还是可以看的到的 所以我们需要通过git log来进行回滚
首先我们通过git log来进行查看
image.png
如上图我们相对test进行一个删除回滚
首先我们通过git log查看找到上一个版本对应的commit_id
然后
image.png
通过 git reset --hard commit_id(想恢复的那个commit)
然后去github上看就会发现已经没有了
image.png

commit之后本地删除文件

image.png
我们在commit之后直接将本地的文件进行删除之后会进行提示
这时候我们需要通过 git rm 2.txt 来对暂存区对文件进行删除
image.png

想删除远程仓库上的commit记录

这和之前一样我们先git log查看我们的记录 然后我们选择一个需要返回的git 版本号
image-20200502103854926
然后 git reset --hard 之前的commit的版本号
然后 git push --force
远程仓库上就没有了

分支 合并

前面经常说到分支,所以现在来简单的说一下
分支可以理解为时间线 一个分支就是一个时间线,之前的分支都是master 一般情况下 默认 主分支都是master,master上存放着稳定的代码,开发代码则是在分支上进行独立开发 ,还是借用廖雪峰老师的图片
image.png

这是我们之前的只有一个分支的情况的图片
所以初始情况下 分支就是一条直的时间线 然后我们可以在创建出我们自己的分支

image.png

上图的红色部分就是我们创建的分支 ,dev是我们分支的名字,然后HEAD指向了我们的dev,说明现在我们所在的分支就是dev
然后我们进行新的代码改动之后我们的分支就会向前移动
image.png
但是我们最后如何进行合并,我们就把master指到我们dev当前的位置就行了
这里再次推荐廖雪峰老师的git教程:https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424
真的非常的通俗移动

说来说去还是时间操作比较来的直白:
首先可以通过 git branch 来创建分支 git checkout 分支名字 来进行分支的切换

image.png

我们也可以使用一条命令 git checkout -b dev 这条命令的效果是等同于上面的两条命令合起来的

然后我们在分支上进行添加文件上传到分支,但是此时的文件是只存在在分支上的 当我们回到master之后这个文件就不在了
image.png
所以如果我们要让master也有这个文件的话 我们需要进行分支的合并
我们通过git merge 需要合并的分支来进行合并
然后合并完之后 我们可以通过 git branch -d 需要删除的分支来进行分支的删除
image.png

冲突解决

为什么会引起冲突呢 原因是 你改了这个文件 恰好别人也改了这个文件 然后git无法判断最终要保留哪个更改了 所以会提示冲突
所以我在两个分支里面同时修改了2.txt 并且进行了合并 不出意外 出现了冲突
image.png
我们查看这个有冲突的文件可以看到git已经给我们标出冲突的地方了
image.png
通过git status可以更加直观的看出来
那么我们接下来要做的就是解决冲突
我们需要人为告诉git 我们要留下哪个
image.png
我们通过vim进行修改 来处理冲突
通过 git log --graph --oneline来查看
image.png
这里可以看到 我们的分支不再是一条直线了 我们人为进行修改了

Bug修改 存储现场

这个标题适用于这种情况,由于一些原因我进行切换分支去修改,但是当前的分支并没有完成,所以我们不能提交,这时候我们就需要利用
git stash来将我们的现场储存起来
我们通过git stash保存当前的状态 然后建立一个新的分支去解决问题,解决完问题之后我们再切换回我们的这个分支,然后用 git stash pop来恢复我们之前的储存并且将stash的内容删除 例子如下
image.png
image.png

总结

最后做一个简单的总结
在我学习过程中感觉常用的进行一个归纳
git init git 仓库的初始化
git add . 将文件夹下的文件加到暂存区
git commit -m "注释" 将暂存区的文件全部推送到当前分支
git checkout -b 新分支的名字 创建一个新的分支并切换到这个新的分支上
git branch 新分支名字 创建一个新分支但是不会自动切换到新分支上面
git switch 分支名字 切换分支
git checkout 分支名字 切换分支
git merge 需要合并的分支的名字 对分支进行一个合并
git log git历史的一个查看
git reset --hard commit_id 可以进行git commit_id的回滚
git stash 存储当前分支的进度
git reset 已经做了 add 操作的一个撤回
git reset HEAD~ 已经commit 但是没有push的撤回

发表评论

电子邮件地址不会被公开。 必填项已用*标注