Git概念以及命令使用

文章介绍了Git作为版本控制工具的基本概念和核心命令,包括仓库初始化、添加文件到暂存区和版本库、分支管理和云端互联。通过实际操作演示了如何创建和切换分支、合并代码以及如何将本地仓库与云端同步。同时提到了Stash功能,用于保存工作区的临时状态。
摘要由CSDN通过智能技术生成

Git

前言

在项目开发的过程中,可能有的项目开发的时间周期很长,因此我们需要有一个工具对项目进行管理, 管理它的各个版本,以及保存每个版本的代码,也就是所谓的版本控制. 并且我们也需要一个工具来帮助我们进行团队协作,使我们更加高效的去开发项目.

试想一下,你如果想开发一个游戏,起初你搭好了一个框架,然后你又开发了两个模块,过了一段时间,你发现第二个模块不需要了,如果能够直接回滚到第一个模块然后再继续开发,那将非常方便,但是你如果想要在第二个版本的基础之上,一步步的把第二个模块给删干净,那又是非常痛苦的事情,如果每个版本都存到本地,注上标号,标明是哪一个版本,貌似也行,但是时间久了也过于麻烦,而且管理起来很不容易.

在试想一下,在开发的时候,如何能够让很多个小伙伴们分工合作,然后把成果再随时合并到一起,然后其他人又能快速的在最新的版本上继续进行工作

无疑我们需要一个工具,这个工具接就是Git. 开发它的人是Linux之父. Git有很多命令,需要我们一一掌握,下面,就让我们看看每个命令是什么,以及它们存在的意义.

在熟悉命令之前,我们要对Git建立一个宏观的意识,也就是说,我们要对Git运作的框架有个大致的了解,Git把每个需要管理的版本看成是一个节点,并且有一个HEAD指针指向最新的节点,当然也有命令可以让它指向其它的节点,因此,所有的版本整体看起来就像是一个树的结构.

还有三个概念就是工作区暂存区,还有版本库的概念. 工作区可以理解为开发代码的一个车间,我么可以边开发,边保存,此时保存只是把暂时开发好的模块放到一边(也就是暂存区),当我们终于开发好了一个版本的时候,再把暂存区里面的所有东西运到版本库,也就是建立了一个新的节点. 其实这种做法也是可以想明白的,我们总不能只有工作区和版本库,因为这样的话,我们必须要把所有的东西全部做完才能进行保存,时间太长了,但我们又不能在进行一些很微小的操作之后就保存,因为微小的操作还不足以构成一个版本. 因此我们就需要一个暂存区,开发一部份,放到暂存区一部分,即使此时有失误,还可以从暂存区拉回来重新开发,不至于在版本库里增加一些不必要的版本.

Git基本命令

下面,就一起感受一下Git的每个命令,以及它们的意义所在.

首先,我们需要创建一个Git的名字,以及对应的邮箱.

git config --global user.name xxx
git config --global user.email xxx

然后,我们会发现,在家目录里面,会生成一个.gitconfig文件,名字和邮箱就存在里面.

然后,我们就可以去开发项目,我们在一个文件夹里面存放我们的项目,因此,就需要先创建一个文件夹:

mkdir project

然后我们进入project里面去. 使用命令:

git init

这样,一个普通的project文件夹,就变成了一个Git仓库了. 并且在project里面会生成一个隐藏的.git文件,里面包含了关于该仓库的所有信息.

此时我们就可以在project里面干我们想干的事情了. 我们可以用以下命令来实时的查看状态:

git status

当我们写了些东西,想往暂存区里面放的时候,可以用如下命令:

git add <文件>

如果想把所有更改的文件全部放入暂存区,命令如下:

git add .

这个时候,就已经把更改放到了暂存区,如果我们已经做完了一个版本的工作,想把该版本放到版本库里面,那么可以用以下命令:

git commit -m "对此版本所做的说明"

这样的话,我们就提交了一个新的版本,版本库里也建立了一个新的节点,加上说明方便我们以后回忆.

当我们 git add之后,如何撤回呢?操纵如下:

git restore --stage <提交到暂存区的文件>

并且,我们在更改了文件之后,可以查看更改的文件相对于暂存区的文件有哪些变化,代码如下:

git diff <更改的文件>

当我们想查看所处分支的所有历史版本的话,代码如下:

git log

此命令可以显示每个版本的时间,备注,以及作者,还有唯一的commit号. 当然也可以简洁的显示,命令如下:

git log --pretty=oneline

那么,在进行了若干个版本之后,我们该如何回溯呢?相关命令如下:

git reset --hard HEAD^ 或 git reset --hard HEAD~  // 回溯到上一个版本
git reset --hard HEAD^^ // 回滚两个版本
git reset --hard HEAD~100 // 回滚100个版本
git reset --hard 版本号 // 回滚到某一指定版本

我们还可以找到HEAD指针的所有历史记录,指令如下:

git reflog

如果我们想删掉工作区相对于暂存区的修改的话,命令如下:

git restore <修改的文件名>

仓库云端互联

以上操作,全部都是在本地完成,换句话说,暂时和”云“没有关系,但是我们只在本地开发的话,难免会出现一些问题,比如硬盘挂掉,服务器挂掉. 如果我们有一个云平台,使得该平台和本地之间能够产生联系,本地的代码可以传到云平台上,云平台的代码可以传回本地,那将再好不过!!

最火的平台就是Github平台,国内的有码云等平台,

在代码托管平台里面,当我们注册玩账号,建立完项目之后,需要ssh密钥才能往git传文件.

我们在云端创建一个项目之后,需要把本地和云端关联起来,命令如下:

git remote add origin git@github.com: XXX/project.git

这样就把远程和本地联系起来了. 然后以下命令,就可以完成从本地复制到云端的完美操作. (-u 只是在初始关联仓库的时候加上, 后面直接就是 git push origin <某一分支名字>把本地某一分支加到云端)

git push -u origin master 
git push origin <某一分支名字>  // 加某一分支
git push  // 加当前分支

当然,我们也可以把云端的任何一个项目复制到本地,命令如下:

git clone git@github.com:xxx/project.git

分支操作

本地分支操作

下一步,我们就要考虑如何创建多分支以及进行相应操作了,创建一个新的分支命令如下:

git checkout -b dev

然后可以用如下命令查看我们正处于哪一个分支:

git branch

我们可以在任意分支之间来回切换,命令如下:

git checkout <某一分支名字>

也可以将某一分支合并到主分支,命令如下:

git merge <某一分支名字>

也可以删除某一分支,命令如下:

git branch -d <某一分支名字>

但是,当我们在某一个分支修改过某一个文件内容的时候,主分支也修改了该文件的内容,这时候合并的话就会有冲突,会提示以下代码,意味着我们需要手动解决冲突.

CONFLICT (content) : Merge conflict in <某文件>
Automatic merge failed; fix conflicts and then commit the result.

上传到云端

当我们在本地进行了一波开发之后,就可以把新的内容再一次的提交到云端,命令如下:

git push

我们也可以把本地的分支传到云端,第一次的时候要先输入如下命令:

git push --set-upstream origin <某一分支名字>

然后,后面只需要git push就行了.

如果我们想要删除云端的某一分支的话,命令如下:

git push -d origin <某一分支名字>

我们当然也可以把云端的分支拉到本地来,命令如下

git checkout -b dev  // 先创建一个分支
git branch --set-upstream-to=origin/dev(云端分支名) dev(本地分支名)  // 最好名字一样
git pull  // 把云端分支拉下来

我们可以在本地的任何一个分支合并云端的任何一个分支,当我们在本地某一分支的时候,用如下命令:

git pull origin <某一云端分支名字>

组合操作

组合操作一

下面的操作应该是用的比较多的一套操作,建一个分支,查看一下分支,切换到某分支,把该分支上传到云,然后再从云删除,然后切换到master主分支,然后删除刚刚创建的分支. (我们删除A分支,不能处在A分支中,要换到其它分支才行)

git checkout -b <某一分支名字>  // 创建某一分支
git branch  // 查看一下有哪些分支
git checkout <某一分支名字>  // 切换到某一分支

git push -u origin <某一分支名字>  // 把该分支上传到云端  
git push -d origin <某一分支名字>  // 把该分支从云端删除

git checkout master
git branch -d <某一分支名字>  // 把该分支从本地删除

组合操作二

下面的操作算是一个重置操作,开发了一波之后,回复到最初接触到的版本.

也就是把所有暂存区的东西回复,此时暂存区啥也没有,第二个语句是恢复所有相对于暂存区的改变. 两个语句下来就相当于啥也没做.

git restore --stage .
git restore .

Stash

我们还可用如下命令把暂存区和工作区里面的命令放入一个栈中,命令如下:

git stash
git stash list // 查看栈中所有记录
git stash pop  //  弹出
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值