扣丁学堂Linux培训分享你必须要熟练掌握的git命令

2019-08-29 11:45:03 4674浏览

git现在的火爆程度非同一般,它被广泛地用在大型开源项目,团队开发,以及独立开发者,甚至学生之中。本篇这篇文章扣丁学堂Linux培训小编给大家分享了一些你必须要熟练掌握的git命令,文中通过示例代码介绍的非常详细,需感兴趣的小伙伴就随着小编来一起学习学习吧。

扣丁学堂Linux培训分享你必须要熟练掌握的git命令

一些基本的操作


#全局配置
git config --global user.name "your username"
git config --global user.email youremail@email.com
git config --global color.ui true

#
mkdir git_proj & cd git_proj
git init
echo "# readme.md" >> README.md
git add README.md
git commit -m "readme commit"
# 添加远程仓库 并给它取个别名 origin
git remote add origin git@github.com:username/repositoryName.git
# 将本地仓库推送至 origin 的 master 分支并与此分支关联(-u 的作用,后期不必在使用)
git push -u origin master

# 从远程仓库 origin 的 master 分支获取最新源码并下载到 tmp 分支
git fetch origin master:tmp
# 比对 tmp 分支于 master 分支做了哪些改动
git diff master tmp
# 合并 tmp 分支到 master 分支
git merge tmp

# clone copy 一个完整的远端仓库到本地
git clone git@github.com:username/repositoryName.git

# pull 获取 origin 的 master 分支并直接和当前分支合并
# 所以可能会发生冲突
git pull origin master


checkout


checkout 命令有两个主要作用:切换分支 和 回滚文件到当前的 stage 版本 或 repository 版本


1、切换分支

# 切换到 new_branch 分支
git checkout new_branch
# 创建并切换到 new_branch 分支
git checkout -b new_branch


2、回滚工作区的文件到最新 stage 版本 或 repository 版本,即从 stage 或 repository 中检出最新版本

# -- 是文件标示符 表名后面的参数为文件 避免产生切换 branch 的歧义
git checkout -- <filename>


回滚时会先检查 stage 中是否有对应的文件,如果没有才会使用 repository 中最新的版本。而当对某文件进行了多次修改和 add 操作后,使用 checkout 我们只能将文件回滚到最新一次的 add 的版本。


但在某些场景下我们可能想回滚到 repository 中的最新版本,怎么做呢?配合 reset 命令的可以很容易做到。


先给出命令:

git reset HEAD <filename> & git checkout -- <filename>


这样就可以将工作区的 filename 回滚到 repository 中的最新版本了。具体原理我们将在实例中详细的讲解。


reset

git 的 reset 命令比较绕,需要耐心的理解。简单来说,reset 有三种重置级别,我们需要准确理解每个级别的作用。


soft:回退版本号。作用于 repository

mixed:回退版本号,重置 stage。作用于 repository 和 stage

hard :回退版本号,重置 stage,重置工作区源码。作用于 repository,stage 和 workspace

我们简单展示下 repository 的版本号,我们以此为 demo 分别尝试三个级别的 reset


git log

version D (HEAD) <-- HEAD指针
version C (HEAD^)
version B (HEAD^^)
version A (HEAD~3)


命令格式:

git reset [--soft|--mixed|--hard] version_no <filename>


--soft:只是单纯的移动 repository 的 HEAD指针 到制定版本号。stage 和工作区没有任何变化。

# 将 HEAD 指针回滚至上一版本 使用 git log 你会发现提交日志退回到了上一版本号
git reset --soft HEAD^
#版本号现状
version C <-- HEAD指针
version B
version A


--mixed:默认选项,移动 repository 的 HEAD指针 到指定版本号,同时用此版本重置 stage 区,所以可能会让工作区的某些文件处于 unstage 状态(当工作区的文件与 repository 中的版本不一致时)。注意,这里是可以指定文件的。soft 本身和文件无关,hard 则是不能单独指定文件,只能全部重置。


# HEAD指针 还是指向 HEAD 
git reset HEAD^2 <filename>
#版本号现状
version B <-- HEAD指针
version A


HEAD指针 指向 version B,并且 stage 已经被 version B 的文件重置,工作区则不受影响。

这里有个很实用的小技巧:

git reset version_no <filename> & git checkout -- <filename>


这两个命令组合在一起可以让工作区的指定文件回滚到 repository 中对应的 version_no 版本。
如果 version_no 是 HEAD 的话那就可以回滚文件到最新一次的提交。


--hard:谨慎使用!!!移动 repository 的 HEAD指针 到指定版本号,同时用此版本重置 stage 区 和 工作区源码。这里要特别注意,工作区的源码也会被覆盖重置掉,你的修改会全部丢失。简单来说就是将代码彻底恢复到指定版本。hard 是没办法指定文件的,要么回滚,要么全回滚。


# HEAD指针 还是指向 HEAD 
git reset --hard HEAD^3
#版本号现状
version A <-- HEAD指针


此时,HEAD指针 指向 version A,并且 stage 和 工作区的文件已经被 version A 的文件重置。整个项目的状态完全回到提交 version A 时按下回车键的那一刻。


想要了解更多关于Linux方面内容的小伙伴,请关注扣丁学堂Linux培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Linux视频,扣丁学堂老师精心推出的Linux视频教程定能让你快速掌握Linux从入门到精通开发实战技能。扣丁学堂Linux技术交流群:422345477。


                          JavaEE/微服务/源码解析/分布式/企业级架构【VIP体验课】


     【关注微信公众号获取更多学习资料】        【扫码进入JavaEE/微服务VIP免费公开课】  



查看更多关于“Linux培训资讯”的相关文章>>


标签: Linux培训 Linux视频教程 红帽Linux视频 Linux学习视频 Linux入门视频 红帽RHCE/RHCSA考试

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号