妈妈再也不用担心我使用git了

2024-04-26 15:32

本文主要是介绍妈妈再也不用担心我使用git了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

妈妈再也不用担心我使用git了

git由于其灵活,速度快,离线工作等特点而倍受青睐,下面一步步来总结下git的基本命令和常用操作。

安装msysgit

下载地址:msysgit,安装完成后配置系统环境变量,打开git bash,尽量少用图形化工具git gui,推荐使用命令行。

你可以在本地操作git,也可以在远程服务器仓库操作git,例如github,这样你就需要配置下ssh key,详情请查看官方文档说明generating-ssh-keys

git操作

1、检出仓库(克隆仓库)

本地克隆:

$ git clone /path/to/repository

远程克隆:

$ git clone <server>

ssh方式(推荐),例如:

$ git clone git@github.com:hcy2367/hcy2367.github.io.git

https方式,例如:

$ git clone https://github.com/hcy2367/hcy2367.github.io.git

2、创建新仓库

$ git init

3、添加工作区(working dir)新的或改动的文件到暂存区(Index或stage)

$ git add <filename> | --all | -A

git工作区,暂存区,HEAD区(可以理解为本地仓库master分支的最新版本)关系图:

4、从暂存区删除添加或改动的的文件

$ git rm --cached <filename> | *

5、查看当前仓库状态

执行add、commit操作之前和之后最好都要查看下当前提交的一些状态信息,防止漏添加,错提交

$ git status

6、查看和对比修改的内容

$ git diff <filename>

7、查看提交的历史记录版本(添加参数:–pretty=oneline,用于输出少量信息)

$ git log

8、提交到当前分支master HEAD区

$ git commit -m '代码提交信息'

9、版本回退

HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本HEAD~100,如回退到上一个版本,则命令如下:

$ git reset --hard HEAD^

其中–hard参数表示撤销工作区与暂存区的修改,回退到指定历史版本,可使用如下命令:

$ git reset --hard 20038

其中20038为提交版本的前五位ID号(原始:20038c521d4e81aca8ec8bca9f05d50ebb4fb835),查看时可使用如下命令:

$ git reflog

10、撤销修改

丢弃工作区的修改,已添加到暂存区的文件不受影响,注意:不能少了–参数,命令如下:

$ git checkout -- <filename> | *

把暂存区的修改撤销掉,重新放回工作区,命令如下:

$ git reset HEAD <filename> | *

11、删除文件

删除后再commit到HEAD区,如果误删文件了,可以恢复到该文件的最新版本。

$ git rm <filename>

12、推送到远端仓库

$ git push -u origin master | <branch>

-u参数表示初次推送时把本地的master分支和远程的master分支关联起来;

如果你还没有克隆现有仓库,并欲将你的本地仓库连接到某个远程服务器,你可以使用如下命令添加:

$ git remote add origin <server>

例如这样你就能够将你的改动推送到所添加的服务器上去了:

$ git remote add origin git@github.com:hcy2367/hcy2367.github.io.git

13、分支

创建分支:

$ git checkout -b <branch>

切换回主分支:

$ git checkout master

列出所有分支:

$ git branch

合并指定分支到当前分支(默认使用fast forward方式):

$ git merge <branch>

普通模式合并(禁用fast forward,因为该方式合并后看不到历史提交信息):

$ git merge --no-ff -m "merge with no-ff" <branch>

删除分支:

$ git branch -d <branch>

丢弃一个没有被合并过的分支,可以通过如下命令强行删除:

$ git branch -D <branch>

推送到远端仓库:

$ git push origin <branch>

14、更新与合并

查看远程信息:

$ git remote -v

从远程获取最新版本到本地仓库,并自动merge到本地分支:

$ git pull origin master

从远程获取最新版本到本地仓库,不自动merge到本地分支:

$ git fetch

合并分支前先到另外一个分支更新代码,然后本地合并后提交到远程仓库; 当有冲突时,可使用$ git diff$ git status命令查看分支的差异,手工解决后,再执行$ git add <filename>命令以将它们标记为合并成功。查看提交记录图形信息:

$ git log --graph --pretty=oneline --abbrev-commit

15、标签(可以理解为版本库的快照)

创建标签:

$ git tag <tagname>

可使用命令如下命令找到历史提交的ID号:

$ git log --pretty=oneline --abbrev-commit

再打标签:

$ git tag v1.0 6224937

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

$ git tag -a v1.1 -m "version 1.1 released" 3628164

查看标签:

$ git tag

查看标签信息:

$ git show v1.0

删除本地标签:

$ git tag -d v1.1

推送标签到远程:

$ git push origin <tagname>

一次性推送全部未推送的标签:

$ git push origin --tags

删除远程标签(先删除本地,再删除对应的远程tag):

$ git tag -d v1.1
$ git push origin :refs/tags/v1.1

16、丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:

$ git fetch origin
$ git reset --hard origin/master

17、移除所有未跟踪文件(一般会加上参数-df,-d表示包含目录,-f表示强制清除)

$ git clean [options]

18、多人协作的工作模式

  • 首先,可以试图用$ git push origin <branch>推送自己的修改;
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用$ git pull试图合并;
  • 如果合并有冲突,则解决冲突,并在本地提交;
  • 没有冲突或者解决掉冲突后,再用$ git push origin <branch>推送就能成功;
  • 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令$ git branch --set-upstream <branch> origin/<branch>解决即可。

19、git工作流程图

说了这么多,来张工作图,可能更加通俗易懂:

总结

掌握上面的命令后基本上可以轻松使用git来管理项目和参与团队开发了,当你欣赏到git的过人和可爱之处后,你可能再也不想使用svn来管理代码了,妈妈也不用担心我如何使用git了,熟悉操作后你就可以遨翔于githubgitcafegitlab的天空,为开源生态圈贡献自己的一份力量。不管是forkstarclone,还是pull request,总要尝试下未知的世界。[博客转移了] =》 http://hcy2367.github.io/

这篇关于妈妈再也不用担心我使用git了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937960

相关文章

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm