git - 简明指南

2023-10-31


git - 简明指南

助你入门 git 的简明指南,木有高深内容 


安装

创建新仓库
创建新文件夹,打开,然后执行 
git init
以创建新的 git 仓库。

检出仓库


执行如下命令以创建一个本地仓库的克隆版本:
git clone /path/to/repository 
如果是远端服务器上的仓库,你的命令会是这个样子:
git clone username@host:/path/to/repository
工作流

你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。

添加和提交

你可以提出更改(把它们添加到暂存区),使用如下命令:
git add <filename>
git add *
这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
git commit -m "代码提交信息"
现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。
推送改动
你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:
git push origin master
可以把 master 换成你想要推送的任何分支。 


如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
git remote add origin <server>
如此你就能够将你的改动推送到所添加的服务器上去了。
分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。




创建一个叫做“feature_x”的分支,并切换过去:
git checkout -b feature_x
切换回主分支:
git checkout master
再把新建的分支删掉:
git branch -d feature_x
除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:
git push origin <branch>
更新与合并

要更新你的本地仓库至最新改动,执行:
git pull
以在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。
要合并其他分支到你的当前分支(例如 master),执行:
git merge <branch>
在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:
git add <filename>
在合并改动之前,你可以使用如下命令预览差异:
git diff <source_branch> <target_branch>
标签

为软件发布创建标签是推荐的。这个概念早已存在,在 SVN 中也有。你可以执行如下命令创建一个叫做 1.0.0 的标签:
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。可以使用下列命令获取提交 ID:
git log
你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性。
替换本地改动

假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:
git checkout -- <filename>
此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。


假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin
git reset --hard origin/master

实用小贴士

内建的图形化 git:
gitk
彩色的 git 输出:
git config color.ui true
显示历史记录时,每个提交的信息只显示一行:
git config format.pretty oneline
交互式添加文件到暂存区:
git add -i
链接与资源

图形化客户端

指南和手册
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git - 简明指南 的相关文章

  • 克隆包含所有子模块的 git 存储库

    我有一个工作 git 存储库 其中包含几个子模块 通过克隆不同的存储库获得 现在 我想要复制整个存储库 包含所有子模块 通过使用推送或克隆到另一台机器上的裸 git 存储库 我很高兴失去子模块的历史记录 我只是对保留它们的内容感兴趣 这可能
  • git push origin 分支名总是推送到 master

    我搜索了一下 但似乎找不到答案 在我可以访问的两个盒子上 当我执行 git push dry run origin mytestbranch 时 我得到以下结果 To email protected cdn cgi l email prot
  • Hudson 结帐卡在“git fetch”处

    我正在使用 git 版本 1 6 2 2 1669 g7eaf8 在 Hudson 1 314 上使用 Hudson Git 插件 0 7 3 当我触发构建时 Hudson 执行 git fetch 但它永远不会返回 我把一只卡在那里14天
  • 是否可以在一次 git 调用中取消设置多个 git 配置值,而不是逐一取消设置?

    我需要自动取消全局 git 配置文件中的许多别名 diff difftool merge mergetool 设置 现在我正在打电话git config global unset对于他们每个人来说 这有点慢 嗯 相对而言 大约需要 3 秒
  • 有没有办法列出Git中未修改的文件?

    我从另一个来源以 tarball 的形式获取了一些更改 我想知道哪些文件没有更改 目标是 Git 克隆 因此可以轻松查看新增内容和更改内容 有人知道如何获取未更改内容的列表 不包括未跟踪的内容 吗 编辑 换句话说 我希望利用 Git 来查找
  • 判断 Git 提交是否是合并/恢复提交

    我正在编写一个脚本 需要检查特定提交是否是合并 恢复提交 我想知道是否有 git 技巧 到目前为止我想到的 我绝对不想依赖这里的提交消息 是检查HASH 2看看我是否没有收到错误 是否有更好的方法 判断某个东西是否是合并很容易 这是不止一位
  • 使用 Git 的 Spring Cloud 配置服务器 - 无法克隆或签出存储库连接超时

    我正在使用 GIT 在 Spring Cloud Config Server 上进行 POC Spring Boot 1 5 3 RELEASE 爪哇1 8 弹簧工具套件https github com kishornpatil https
  • 我可以通过链接分享我的私人 GitHub 存储库吗?

    我在 GitHub 上的私人存储库中有一个 Java 应用程序 我想与没有帐户的人共享它 我在网站上没有找到任何与此相关的选项 有没有办法做到这一点 协作者只能是 GitHub 用户 无法在非 Github 用户之间共享私有存储库 您需要
  • 克隆存储库而不将其设为原始远程存储库

    我正在从一台将被擦除的计算机上克隆一个 git 存储库 是否可以在不创建原始存储库的情况下克隆存储库origin master 或者我是否需要克隆它 然后删除远程分支 这是通过git remote rm origin Edit 存储库只有一
  • 节点项目的 Azure git 部署失败

    我正在尝试将我的项目部署到azure 它正在失败 这些是我采取的步骤 git init git config core longpaths true git add git commit m initial commit 所有这些都有效 我
  • Windows 版 GitKraken 中的文件名太长

    正如建议的Q22575737 https stackoverflow com a 22575737 6623589 我已经更新了我的注册表并设置了git config system core longpaths true在处理长路径时 问题
  • 在 git repo 中查找超过 x MB 且 HEAD 中不存在的文件

    我有一个 Git 存储库 用于存储随机的内容 主要是随机脚本 文本文件 我设计的网站等 随着时间的推移 我删除了一些大型二进制文件 通常为 1 5MB 这些文件会增加存储库的大小 而我在修订历史记录中不需要这些文件 基本上我希望能够做到 m
  • 使用 TFS 个人访问令牌克隆 Git 存储库

    我正在尝试以编程方式克隆 git 存储库 我的 ASP NET MVC 应用程序正在创建并启动一个进程 处理进程的代码工作正常 但是当尝试使用本地 TFS PAT 克隆 git 存储库时 身份验证失败 我无法使用 NTLM 或要求用户输入凭
  • Git 无效的修订范围 Symfony2 Composer 外部包

    RuntimeException Failed to execute git log 18efcf67d236d5bbf46ac67820250dffd0474b6e 94e2146f525fa1367e15646fa273e5b34f92
  • git 预提交钩子格式代码 - Intellij/Android Studio

    本要点展示了如何在预提交时使用 Eclipse 格式化程序自动格式化 Java 代码 Source https gist github com ktoso 708972 https gist github com ktoso 708972
  • refname 不明确且拉取失败

    我运行了以下命令 因为我想将生产分支移回而不必先签出 git branch f production HEAD 1 现在 当我检查生产时 我收到以下警告 warning refname production is ambiguous 然后我
  • 分支明显不同,但提交历史是相同的

    git status告诉我我的分支和我在另一个存储库上开始的分支已经分歧 On branch master Your branch and origin master have diverged and have 13 and 13 dif
  • IntelliJ:查看本地和 git 提交/分支之间所有已更改文件的差异

    使用 IntelliJ 的 diff 查看器是检查代码的一种非常好的方法 因为您可以使用 IntelliJ 代码编辑器的所有功能 重构 完成等 在本地版本中进行更改 不幸的是 我还没有弄清楚当你在 IntelliJ 中进行代码审查时如何做最
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • Git:显示分支之间的差异,忽略合并的提交

    我的存储库历史记录看起来像这样 x y z branch a b c d e master 我想获得 branch 完整历史记录的单个差异 即 像 git diff 输出 我不想要像 git log p 产生的一大堆差异 而不包括任何从 m

随机推荐

  • statsmodels 无法安装

    statsmodels 安装报错 使用 whl 包也无法安装 error subprocess exited with error Getting requirements to build wheel did not run succes
  • End-to-End Human Object Interaction Detection with HOI Transformer(CVPR2021)

    基于HOI transformer进行端到端的人与物体的交互检测 介绍 这是CVPR2021年的一篇论文 主要是作者提出了一种端到端的HOI检测方法 基于Transformer结构 作者总结了以前的研究工作以及方法 基本上目前的HOI研究主
  • Transformers学习笔记5

    hugface hub上不仅有预训练模型还有数据集 下载数据集 from datasets import load dataset raw datasets load dataset glue mrpc raw datasets Datas
  • feign的用处以及替换实现请求方式的实现

    前言 处于分布式系统下的服务间的调用是如何实现的 一 feign是什么 fegin旨在简化服务间的调用实现 实现了开发人员不在关注服务间的http请求的编写 只关注与自生的业务实现 二 feign只有Java Http客户端变得更加容易这一
  • android NDK添加iconv支持,支持GBK UTF-8编码转换

    NDK自带的iconv的 查看 android ndk r9d sources android support include iconv h 在Android mk中加入 LOCAL WHOLE STATIC LIBRARIES andr
  • 使用JSP页面执行el表达式的方法

  • Kongfu Panda 英文字幕

    1 00 00 05 033 gt 00 00 21 700 Kongfu panda 2 00 00 34 300 gt 00 00 37 367 Tales of a legendary warrior 3 00 00 37 400 g
  • QML自定义时间选择器

    在进行使用qml编程过程中 需要实现日期时间的选择 但是qml官方只提供日期控件 因此自己定义了时间控件 注意 QtQuick 2 9不要降低版本 否则会有内部的信号处理器无法使用 import QtQuick 2 9 import QtQ
  • 关于测试$.getJSON获取json数据的问题

    最近在帮朋友解决 getJSON问题时遇到的情况 记录下来 希望能帮助到别人 getJSON是后去本地后者本地json数据的 首先 不管是获取网络或本地数据有问题 可以通过输出错误信息来查看原因 例如 getJSON Scripts Men
  • websocket使用原生js写法基础教程

    文章目录 1 框架图 2 具体实现 2 1 client 2 2 server 3 所有源码 4 总结 1 框架图 文件结构 2 具体实现 2 1 client 创建一个client文件夹里面创建两个目录表示两个页面一个login页面 一个
  • Build step 'Record JaCoCo coverage report' changed build result to UNSTABLE

    状况 这个异常jenkins job build黄色提示 原因就是加入了 这个打钩如下 去掉就行了 会如图1 和 min max值比较 产生unstable状态 JaCoCo plugin Thresholds JacocoHealthRe
  • Unity中的ComputeShader

    一 简介 和CPU Random MemoryAccesses 随机内存获取 不同 GPU是用平行架构处理大量的并行数据 例如vertex和fragment就是分开计算的 使用GPU并利用这种特性来进行非图形计算被称为GPGPU编程 Gen
  • delphi 发送html邮件,delphi-icv 邮件发送 -所用控件(HtmlSmtpCli).pdf

    kkaayy 的专专栏栏 ddeellpphhii iiccvv 邮邮件件发发送送 所所用用控控件件 HHttmmllSSmmttpp llii 分类 delphi 2013 12 10 16 39 30人阅读 评论 0 收藏 举报 1 界
  • Java多态机制在实际中的应用

    在实际开发工作中 常常遇到一个功能有多种实现方式 比如支付方式 有分微信支付 京东支付 支付宝 银联等支付方式 不同支付方式的大概流程大抵相似 实现细节有所区别 这个时候就可以用到java的多态机制 先定义一个公共接口 接口定义支付流程的各
  • ftp 使用笔记

    https www ngui cc el 2911341 html action onClick 启动 systemctl start vsftpd service 查看启动状态 systemctl status vsftpd servic
  • dart 学习列表 List

    List 列表 在 Dart 编程语言中 List 是一种有序的集合数据类型 用于存储一系列项目 它允许您在单个变量中存储多个项目 并提供了许多操作来管理列表中的数据 以下是关于 Dart 中的 List 的一些重要信息 创建 List 您
  • QDialog类

    QDialog类 QDialog类 api 使用方式 调用exec 槽函数 调用accept槽函数 调用reject槽函数 调用done槽函数 例子 QDialog类 QWedget类中的函数 在QDialog中都可以使用 api 构造函数
  • 进程的状态与task_struct结构体

    一 什么是进程 进程 就是程序的一个执行实例 或正在执行的程序 详细介绍请看 点击打开链接 那么进程在Linux中有几种状态呢 如下 1 R 处于运行或可运行状态 即进程正在运行或在运行队列 可执行队列 中等待 只有在该状态的进程才可能在C
  • 程序员工作之后如何提升自己?

    IT行业人士里有不少人似乎从来就没晋升过 年复一年 他们工作在同一岗位上 停留在同一职位上 我不知道他们是否得到过晋升机会 你认识这样的人吗 这事居然出人意料地常见 如果你不想终老在这条死胡同上 就得做点什么 在本章中 我将给你一些如何攀登
  • git - 简明指南

    git 简明指南 助你入门 git 的简明指南 木有高深内容 安装 下载 git OSX 版 下载 git Windows 版 下载 git Linux 版 创建新仓库 创建新文件夹 打开 然后执行 git init 以创建新的 git 仓