再学git

前言

3年前我就知道了有git这么个东西,当时也学了,后面也断断续续又学又用了,可是还是感觉自己一直停留在只会git clone,git pull,git push的时代,到了公司实习什么拉分支、合并分支、版本管理等还是一窍不通,因此暗下决心,在好好学一遍git.

什么是git

简单来说gti就是一个版本控制工具,可以帮助我们简单点记录自己对于代码等文件的更改记录,记录我们每一次对于代码的更改。当然,这是对于一个程序员最基本的git功能。在一个团队中,git还可以实现多人同时对一个项目的开发管理。举个例子,对于一个项目雏形,a开发A模块,同时b开发B模块,同时c开发C模块;git记录下a,b,c三人对于原始项目的更改,然后自动合并大家的更改,即ABC都在项目雏形上开发好了,这么说可能有些抽象,下图展示了这一过程:
在这里插入图片描述
更深的理解,以往的版本管理工具是集中式控制的,而git是分布式的,没有所谓的“中央服务器”,每个人电脑上的都是完整的版本库,即所谓的本地库,这样不要联网也能正常开发。即使有人把“远程库”认为是中央服务器,那也只是起交换作用的。
在这里插入图片描述

git 安装

widows安装:直接官网下载安装包,一路”下一步到底“,然后在桌面右键出来的弹窗有Git Bash就说明安装好了
mac安装,好像记得直接再控制台输入git按回车就好了,也可以看看别人的教程。

开始Git

创建版本库

第一步,其实就是创建一个新的文件夹,window用户可以直接右键新建文件夹。我们的目标是这个版本库(文件夹)里的东西都可以被Git管理起来,可以记录每个文件的增删改,还可以还原历史版本。
在这里插入图片描述
第二步,通过git init 将这个目录变成可以被Git管理的仓库
在这里插入图片描述
接下来就可以在这个learngit目录下进行文本内容的编辑了,每次编辑好后,可以用git add "文件名“/* 提交我们的修改到暂存区,然后用**git commit -m “修改内容”**将这批的修改(暂存区的所有内容)提交到版本库。注意,没有add的话,commit是没有效果的哦。

工作区、版本库和暂存区的理解

工作区简单来说就是电脑可以看到的目录,比如learngit这个文件夹,
版本库简单来说就是.git这个隐藏文件夹,在版本库中,最重要的就是称为stage的暂存区,当然默认创建的master分支以及HEAD指针也在此。
在这里插入图片描述

commit提交规范

git时间管理

git status查看工作区

查看工作区状态,准确来说是还没进行过git commit之前的修改.
git add之前可以通过git diff查看修改内容
在这里插入图片描述

git log查看历史版本

可以看到我commit了三次,由于偷懒,每次commit的内容都一样了,尴尬。那现在,我需要回退到第一个提交,保证以后都不犯这种同名的错了。
在这里插入图片描述
那么如何回退呢?

git reset 版本回退

首先,在git中每次commit都会生成一个版本号,就是上图那一长串黄色字体。而HEAD表示当前版本,HEAD^表示上个版本,以此类推。所以回到上个版本的代码是:
git reset --hard HEAD^
刚执行完这个代码发现又后悔了,忘了最后一次修改了什么但就是感觉很重要,怎么恢复呢?
git reset --hard 版本号前几位
通过版本号我们可以定位到每个版本,
”可是我回退了,git log里没有最后一次的版本号了怎么办?“
“刚刚不是在上一部输出过一遍吗,翻翻看”
“可是我不小心把这个窗口关了”
好吧,不过还可以通过git reflog来查看你的每次操作,如下,我在acf1cd0的版本进行了moving to HEAD^到上个版本呵呵
所以
git reset --hard acf1cd0完美
在这里插入图片描述
不过我的最终目的是恢复到第一次用“understand how stage works"的版本,而这个版本号是。。。。
nice
在这里插入图片描述
补充说明,git reset只是版本切换(或者说是将HEAD指向了不同的版本),并没有删除版本因此可以换来换去.

git restore/get reset 撤销修改

1.修改还未add,git restore file
2.已经add,git reset file + it restore file

远程仓库

1.本地与远程库的链接

第一步:
首先生成SSH,ssh-keygen -t rsa -C “youemail”
将生成的.ssh中的id_rsa_pub里的内容复制到git上
第二步:
在gitup上创建新项目,安装提示关联本地仓,并将本地代码push上去。
在这里插入图片描述

分支管理

不同分支,同步开发
创建分支其实就是创建了一个新的指针,切换分支就是将HEAD指向不同分支的指针,如下图在这里插入图片描述

git checkout -b dev 创建并切换分支

相当于 git branch dev + git checkout dev

git branch 查看分支

git merge 合并指定分支到当前分支

如在main分支上用git merge dev 合并了dev分支

git branch -d 分支名 删除某分支

遇到合并冲突

先解决好冲突,再git add git commit

git log --graph 产看分支合并图

在这里插入图片描述

git merge --no-ff -m “merge with no-ff” dev有历史

能够看到合并历史,便于团队管理

git stash 暂存工作现场

当我们在开发的时候,还未add或还未commit的时候,需要切换分支去处理别的事情,可以先用git stash 将未完成的工作暂存.然后去修复bug,修复完成后再给git stash pop,取出暂存的工作,继续开发。

git rebase 将本地未push的分叉提交历史整理成直线

git tag打标签

git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;

git tag -a -m "blablabla…"可以指定标签信息;

git tag可以查看所有标签。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值