笔记-Git入门总结

总概

首先,我理解的git其实就是为了让团队协作非常方便的一个分布式版本控制系统。使用git来进行团队协作可以方便很多,可以理解为不同的人可以在不同的时间线上去整理一份档案。git还可以用来先暂时保存我们的进度,以及可以看到是谁做了一些改变等等,功能可以说非常强大。
一些命令可以点击下面连接来查看。
https://gitee.com/liaoxuefeng/learn-java/raw/master/teach/git-cheatsheet.pdf
一个本地仓库一个远程仓库。
初始化一个本地仓库的命令就是git init
新建一个远程仓库就是在GitHub中创建一个仓库。
我们要连接一个远程仓库,一般在我们新建一个远程仓库之后就可以看到一些提示:再Gitbash敲这个命令就可以跟远程仓库关联起来,就可以往远程仓库上推送啦。

git安装

在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。安装完成后,点击鼠标右键,如果出现图中所示,就表明说安装成功。
在这里插入图片描述

创建并初始化一个版本库

要知道几个概念:一个工作区,一个暂存区,还有一个版本库

  • 工作区:就是电脑里能看到的目录。
  • 暂存区:英文名叫stage或者index,一般存在.git目录下的index文件中。
  • 版本库:工作区有一个隐藏目录.git,就是Git的版本库。

暂存区就是还没有保存,工作区就是可以推到服务器了。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
在这里插入图片描述
就是说我们每次git add其实是将文件修改添加到暂存区,git commit是把暂存区的所有内容提交到当前分支。
(一般都是需要提交的文件一次性放到暂存区,然后,一次性提交暂存区的所有修改)
通过git init命令把这个目录变成Git可以管理的仓库:
在这里插入图片描述
用命令git add告诉Git,把文件添加到仓库:
用命令git commit告诉Git,把文件提交到仓库:
在这里插入图片描述

创建一个远程仓库

登录GitHub
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个新仓库就创建成功了。可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后把内容推送到GitHub仓库中。先创建远程仓库,然后远程仓库克隆。

克隆仓库

克隆仓库其实就是可以理解为把远程端整体拉到本地的一个过程。使用git clone 克隆一个本地库。如果多人协作开发,那么每个人就可以各自从远程克隆一份。添加远程仓库(GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,非常方便)
本地仓库和github仓库之间的传输是通过ssh加密的。
在.ssh中可以看到id_rsa(私钥)和id_rsa.pub(公钥)
.ssh文件下面有两个文件id_rsa和id_rsa.pub
id_rsa是私钥 id_rsa.pub是公钥

  1. 第一步:创建ssh key
    (若没有,打开Gitbash,输入下面命令创建ssh key)一路回车

ssh-keygen -t rsa -C “your email@qq.com”

  1. 第二步:登录Github
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述这样就添加成功了。
    为什么必须是SSH key呢?因为Git Hub需要识别出你推送的提交是你推送的,而不是别人冒充的,就是为了更安全。

现在就可以克隆一个远程仓库:在gitbash中输入命令:

git clone git@github.com:lss-33/test2.git

在这里插入图片描述
在这里插入图片描述
克隆成功啦!
我们就可以通过这个命令来查看以下自己的远程仓库信息
在这里插入图片描述

提交到仓库

点开test2可以看到一个隐藏文件.git,git版本库里存放了许多东西。代表一个git工作区。这些信息就决定了当前工作区什么状态等等。
在这里插入图片描述
在这里插入图片描述

现在比如我们在test2中添加一个文本
我们通过git status命令来查看当前工作区的状态:
可以看到它显示有一个test2.txt还没有被提交到暂存区
在这里插入图片描述
现在使用git add 文件名 命令把文件放到暂存区
在这里插入图片描述
在重新查看工作区的状态,已经发生改变了,但是还没有提交。
在这里插入图片描述
通过git commit -m ‘内容’把文件提交到版本库,这样才能到git仓库去管理它
在这里插入图片描述
此时,再重新git status
在这里插入图片描述
此时就可以提交到远程仓库中
使用git push origin master
当第一次推送的时候需要加上-u,只有第一次需要加,往后-u就可以去掉啦。
在这里插入图片描述
然后切换到远程仓库上,就可以看到了我们提交的信息
在这里插入图片描述

撤销

假如现在我们对文件进行了一个错误的修改,并且commit了。现在我们要修改。
可以通过git diff 文件名 查看文件修改了什么内容
在这里插入图片描述
首先,我们可以通过git log来查看提交历史,可以看到commit id
在这里插入图片描述
git reset --hard commit id 回退到某一个版本(只输入commit id前几个就好)
在这里插入图片描述
现在可以看到这个操作被撤回啦!
也可以通过git checkout – 文件名,把文件在工作区的修改全部撤销。让这个文件回到最近一次git commit 或者git add的状态。
总结:
乱改了工作区某个文件的内容,想直接丢弃掉工作区的修改。

git checkout – 文件名

乱改了工作区的某个文件,并添加到暂存区,提交到了版本库。

git reset --hard 文件名

在git中删除文件 rm 文件名。
确定从版本库中删除文件。

rm 文件名

文件就从版本库中被删除了。
如果删除错了,因为版本库里还有呢,所以可以很轻松的恢复误删的文件到最新的版本(从来没有被添加到版本库就被删除的文件,是无法被恢复的)。
在这里插入图片描述

分支

在一个本地仓库中可以有不同的分支,git默认会给我们创建一个主分支就是master,一般情况下我们可以新建一个分支来进行操作,然后提交到暂存区,在合并到主分支上,然后把新建的分支删除掉即可。这样操作是更安全的,然后再进行推送即可。
主分支:master分支
HEAD指向master,master指向提交
创建并切换:(以下两个命令都可以)
git checkout -b 分支名
git switch -c 分支名
这一个命令其实相当于下面两步:

git branch 分支名 (创建分支)
git checkout 分支名 (切换分支)
git switch 分支名 (切换分支)

git branck可以查看当前分支(在当前分支前面会有一个*)
其实这里也可以看到
在这里插入图片描述
在这里插入图片描述
我们在分支上进行的操作,切换到主分支上是看不见的。
比如我们在dev分支上创建一个dev文本。
在这里插入图片描述
切换到master是看不见的。
在这里插入图片描述
当我们在dev分支上提交完成后,我们可以合并分支
git merge 要合并的分支
这样切换到主分支,我们就可以看到了
在这里插入图片描述
在这里Fast-forward是快进模式,合并速度非常快,这种模式下,删除分支后,会丢掉分支信息,合并分支时,加上–no-ff参数就可以用普通模式进行合并,合并后的历史有分支,能看出来曾经做过合并,而fast-forward合并就看不出来曾经做过合并。
然后我们就可以把分支删除啦!
使用git branch -d 分支名
在这里插入图片描述
现在我们在新建的分支上对文件进行了修改,切换到主分支上对文件也进行了修改,再次合并分支,就会出现冲突。
在这里插入图片描述
在这里插入图片描述
我们查看git status
上面的是主分支master修改,下面的是dev分支的修改
此时我们需要手动变基为我们希望的内容,然后再次提交,可以通过git log --graph 看到合并分支图
在这里插入图片描述
现在在删除分支就可以了。
当从另一台电脑的另一个目录克隆,从远程克隆时,默认情况下,只能看到本地的master分支,如果需要在dev分支上开发,就必须创建远程origin的dev分支到本地:

git checkout -n dev origin/dev

当你和同事同时修改并尝试推送时,就会推送失败,因为同事和你的最新提交有冲突。此时就需要解决冲突,大概步骤如下:
多人协作的工作模式通常是:

  • 首先,可以试图用git push origin branch-name 推送自己的修改
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull尝试合并
  • 如果合并有冲突,则解决冲突,并在本地提交
  • 如果没有冲突或者解决掉冲突了,再用git push origin branch-name 推送就能成功了
  • 先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送
    如果git pull提示no tracking information,则说明本地分支和远程分支的连接关系没有创建,用命令
    git branch --set-upstream-to branch-name origin/branch-name

Git有一种称为rebase的操作,有人把它翻译成“变基”。

  • rebase操作可以把本地未push的分叉提交历史整理成直线。
  • rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
    在这里插入图片描述
    在这里插入图片描述

标签

标签管理(发布一个版本时,通常现在版本库中打一个标签tag)
Git的标签是版本库的快照,就是指向某个commit的指针

git tag name 默认是HEAD ,可以指定为一个commit id

git tag 可以查看所有标签

在这里插入图片描述
假如本该打标签的,但是忘记了应该怎么办呢?
找到历史提交的commit id,然后打上去就可以了。
比如commit id是ae6f94aa35
在这里插入图片描述

git tag v0.9 f52c633

这样就打上标签了。
标签不是按时间顺序列出,而是按字母排序的

git show tagname 可以查看标签信息

可以创建带有说明的标签,用-a指定标签名,-m指定说明书
在这里插入图片描述

git tag -a v0.1 -m ”version 0.1 released’ 1094adb

标签总是和某个commit挂钩,如果这个commit再两个分支上都出现了,那么这两个分支上都可以看到这个标签。
操作标签
如果标签打错了,可以删除
在这里插入图片描述

git tag -d v0.1

如果要推送某个标签到远程,可以使用如下命令
在这里插入图片描述

git push origin tarname
在这里插入图片描述
也可以一次性推送全部尚未推送的本地标签

git push origin --tags

如果标签已经推送到远程,要删除远程标签,
先从本地删除

git tag -d v0.9
在这里插入图片描述

从远程删除,删除命令也是push

git push origin :refs/tags/v0.9
在这里插入图片描述

要想检验是否删除成功,可以登录github查看
在这里插入图片描述
以上就是本人对Git在工作当中基本的操作和理解,若有不对,望指出。同时可以点击我的另一篇文章,查看Git图形界面Source Tree的基本使用。SourceTree

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值