Git框架命令集

2024-01-22 01:59
文章标签 框架 git 命令集

本文主要是介绍Git框架命令集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思路图:

在这里插入图片描述你要说一篇git就能学会,我真的不信。那我们就按照标号顺序进行命令罗列。

一:git add 将该文件添加到暂存区

  1. 添加一个或多个文件到暂存区: bash git add [file1] [file2] ...
  2. 添加指定目录到暂存区,包括子目录:git add [dir]
  3. 添加当前目录下的所有文件到暂存区:git add .
  4. git add -u 提交被修改和被删除文件

二:git commit 将本地暂存的修改提交到版本库

  1. git commit -a -m '提交信息',-m参数是输入提交信息的,-a 参数就是可以把还没有执行add命令的修改一起提交
  2. git commit --amend 发现我写的提交信息不合规范,就可以修改上一次的提交信息
  3. 一般来说了解上述三种参数即可满足我们工作中的日常开发了

每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,commit-id在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里.

在进入实例之前,我们先介绍几个命令

git status -s 或 git status --short 命令 以精简的方式显示文件状态。
git status 输出的命令很详细,但有些繁琐。
新添加的未跟踪文件前面有 ?? 标记,
新添加到暂存区中的文件前面有 A 标记,
修改过的文件前面有 M标记。
M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。

实例1 正常逻辑
创建文件及文件夹,并初始化仓库,进行查看

$ mkdir git_status
$ cd git_status/
:~/git_status$ touch readme.md
:~/git_status$ touch README
:~/git_status$ ls 
README  readme.md
:~/git_status$ git init 
已初始化空的 Git 仓库于 /home/ts/git_status/.git/
:~/git_status$ git status
位于分支 master
尚无提交
未跟踪的文件:(使用 "git add <文件>..." 以包含要提交的内容)READMEreadme.md
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

将文件添加到暂存库,查看并提交,查看改动与第一次提交

:~/git_status$ git add
没有指定文件,也没有文件被添加。
也许您想要执行 'git add .'? 
:~/git_status$ git add .
:~/git_status$ git status
位于分支 master
尚无提交要提交的变更:(使用 "git rm --cached <文件>..." 以取消暂存)新文件:   README新文件:   readme.md
:~/git_status$ git commit -m "the first time commit"
[master (根提交) a32a080] the first time commit2 files changed, 0 insertions(+), 0 deletions(-)create mode 100644 READMEcreate mode 100644 readme.md
:~/git_status$ git status
位于分支 master
无文件要提交,干净的工作区
ts@ts-OptiPlex-7070:~/git_status$ git log
commit a32a08082bf48e3e8a0ef64c45d268a80f7119f2 (HEAD -> master)
Author: huangrui0922 <huangrui0922@thundersoft.com>
Date:   Tue Oct 27 16:32:08 2020 +0800the first time commit

更改README ,查看改动,并再次提交

:~/git_status$ vim README 
:~/git_status$ git status
位于分支 master
尚未暂存以备提交的变更:(使用 "git add <文件>..." 更新要提交的内容)(使用 "git checkout -- <文件>..." 丢弃工作区的改动)修改:     README修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
:~/git_status$ git add README 
:~/git_status$ git status
位于分支 master
要提交的变更:(使用 "git reset HEAD <文件>..." 以取消暂存)修改:     README:~/git_status$ git commit -m "second commit"
[master e43aa26] second commit1 file changed, 1 insertion(+)

查看改动

:~/git_status$ git status
位于分支 master
无文件要提交,干净的工作区
ts@ts-OptiPlex-7070:~/git_status$ git log
commit e43aa262233715a954d145ce238b17cd23556ab5 (HEAD -> master)
Author: huangrui0922 <huangrui0922@thundersoft.com>
Date:   Tue Oct 27 16:35:36 2020 +0800second commitcommit a32a08082bf48e3e8a0ef64c45d268a80f7119f2
Author: huangrui0922 <huangrui0922@thundersoft.com>
Date:   Tue Oct 27 16:32:08 2020 +0800the first time commit
ts@ts-OptiPlex-7070:~/git_status$ 

实例2 精简逻辑
git status命令用于显示工作目录和暂存区的状态。 使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。
我们添加两个文件:

$ touch README                # 创建文件
$ touch hello.php             # 创建文件
$ git status -s
?? README
?? hello.php
$ 

接下来我们执行 git add 命令来添加文件:

$ git add README hello.php 

现在我们再执行 git status,就可以看到这两个文件已经加上去了。

$ git status -s
A  README
A  hello.php

新项目中,我们可以使用 git add . 命令来添加当前项目的所有文件。
现在修改 README 文件:

$ vim README

在 README 添加以下内容:# Runoob Git 测试,保存退出。
再执行一下 git status:

$ git status -s
AM README
A  hello.php

AM 状态的意思是这个文件在我们将它添加到缓存之后又有改动。改动后我们再执行 git add . 命令将其添加到缓存中:

$ git add .
$ git status -s
A  README
A  hello.php

文件修改后,我们一般都需要进行 git add 操作,从而保存历史版本。

三:git checkout 检出(切换)分支

checkout命令用法如下:
1.

 git checkout [-q] [<commit>] [--] <paths> ...

命令举例(此命令用来放弃掉所有还没有加入到缓存区的修改)

  • git checkout -- filepathname 放弃单个文件修改,注意不要忘记中间的"–",不写就成了检出分支了
  • git checkout . // 放弃所有的文件修改

但是此命令不会删除掉刚新建的文件。那要是已经添加到缓存的修改呢?
命令举例(相当于撤销 git add 命令所在的工作)

  • git checkout HEAD filepathname //将分支HEAD的filepathname撤销

  • 也可以使用 git reset HEAD filepathname将分支HEAD的filepathname撤销

如果已经用 git commit 提交了代码(相当于撤销 git commit 命令所在的工作):

  • 可以使用 git reset --hard HEAD^ 来回退到上一次commit的状态。 此命令可以用来回退到任意版本:git reset --hard commitid

非常重要:如果省略commit,则会用暂存区的文件覆盖工作区中的文件,否则用指定提交中的文件覆盖暂存区和工作区中的对应文件
2.

git checkout [<branch>]
  • “分离头指针”状态:即git checkout HEAD^ 切换到HEAD的上一级commit
  • git checkout 后面不跟任何参数,则就是对工作区进行检查

非常重要:git checkout HEAD是会改变HEAD头指针的。而且只有当HEAD切换到某个分支的时候才可以对提交进行跟踪,否则就会进入“分离头指针”的状态。
3.

git checkout [-m] [ [-b | -- orphan ] <new_branch>]  [start_point] 
  • git checkout --detach <branch>切换到分支的游离状态,默认以该分支下的最后一次提交ID
  • git checkout -B <branch> 强制新建分支
  • git checkout -b <branch> 创建分支
  • git checkout --orphan 它会基于当前所在分支新建一个赤裸裸的分支,没有任何的提交历史,但是当前分支的内容一一俱全。新建的分支,严格意义上说,还不是一个分支,因为HEAD指向的引用中没有commit值,只有在进行一次git commit后,它才算得上真正的分支。
  • git checkout --merge <branch> 适用于在切换分支的时候,将当前分支修改的内容一起打包带走,同步到切换的分支下,但是有两个需要注意的,一:如果当前分支和切换分支间的内容不同的话,容易造成冲突。二:切换到新分支后,当前分支修改过的内容就丢失了。
  • git checkout -p <branch>这个命令可以用来打补丁。这个命令主要用来比较两个分支间的差异内容,并提供交互式的界面来选择进一步的操作。这个命令不仅可以比较两个分支间的差异,还可以比较单个文件的差异

四:git push 将本地版本库的分支推送到远程服务器上对应的分支

格式:

git push <远程主机名> <本地分支名> <远程分支名>
  • 例子: git push origin master:refs/for/master 将本地的master分支推送到远程主机origin上的:master分支, origin :程主机名

这个命令的差异无非就是哥哥“名”的省略带来的含义

  • git push origin master 远程分支被省略,则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,就会被新建
  • git push origin :refs/for/master 省略本地分支名,表示删除指定的远程分支,这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master
  • git push origin当前分支与远程分支存在追踪关系,则本地分和远程分支都可以省略,将当前分支推送到origin主机的对应分支
  • git push如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名
  • refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要

五:git fetch/clone

  • git clone:拷贝一个 Git 仓库到本地
  • git fetch:一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令;

1.git clone

  • 拷贝一个 Git 仓库到本地,本地目录名称与Git 仓库同名
    git clone <版本库的网址>
  • 拷贝一个 Git 仓库到本地,重新定义本地目录名称
    git clone <版本库的网址> <本地目录名>
  • 拷贝一个指定分支到本地,本地目录名称与分支同名
    git clone -b 分支名 <版本库的网址>
  • 拷贝一个指定分支到本地,重新定义本地目录名称
    git clone -b 分支名 <版本库的网址> <本地目录名>

2.git fetch

$ git fetch <远程主机名> 将某个远程主机的更新,全部取回本地,git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响
$ git fetch <远程主机名> <分支名> 取回特定分支的更新,取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。如origin主机的master,要用origin/master读取

六:git pull 远程仓库中的更改合并到当前分支中

默认模式下 相当于 git fetch + git merge FETCH_HEAD 命令,更准确的说,git pull 相当于:
先执行git fetch + 指定参数,然后执行git merge 命令将检索到的分支合并到当前分支。

git pull过程:

  • git fetch origin master 先拉取,让本地的origin/master先更新到最新

      A---B---C master on origin
    /
    

    D—E---F—G master

  • git merge origin/master

           A---B-----C     origin/master/             \D---E---F---G--- H    master
    

这篇关于Git框架命令集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提