TortoiseGit工具使用

2023-10-31


TortoiseGit clone、commit、push、pull


3.1 克隆项目

 

打开资源管理器(我的电脑/计算机), 进入规划好的某个目录中, 然后在空白处点击鼠标右键, 选择 TortoiseGit --> 克隆... (Clone...).

弹出克隆项目对话框:

在对话框的 URL中输入项目地址,如:

https://github.com/cncounter/LispGentleIntro.git

确定本地目录,然后点击 确定 按钮. 等待完成后,点击关闭按钮即可.

3.2 修改提交项目

项目克隆完成后(可以将克隆 clone 理解为 下载, 检出 checkout 操作). 修改本地项目中的某些文件,如 将 README.md 修改

然后在本地项目的空白处点击鼠标右键Commit,

弹出提交(Commit)对话框:

作为好习惯,填写提交日志,勾选需要提交的文件,然后点击 "确定" 按钮, 即提交到本地仓库.

3.3 将提交到本地的项目推送到在线仓库

推送是提交的下一步操作.

在本地项目的空白处点击鼠标右键, 选择 TortoiseGit --> 推送... 或: Push....

弹出推送(push)对话框:

一般保持默认,点击 “确定” 按钮.

然后弹出推送进度界面, 可能要求你输入用户名:

确定OK,然后要求输入密码:

密码输入正确后,OK,显示推送成功界面:

如果你按照上一小节的设置操作,则输入密码以后会记住密码. 密码会明文保存在 C:\Users\Administrator\.git-credentials 这种文件中, 请小心使用.

3.4 拉取项目(pull ...)

如果本地的项目没有在线仓库的新,则需要执行拉取操作(Pull ...).

在本地项目的空白处点击鼠标右键, 选择 TortoiseGit --> 拉取... 或: Pull....

弹出拉取(pull)对话框:

【如果拉取有BUG,请不要使用 rebase, 下载最新的 TortoiseGit 即可】, 进入 拉取进度界面:


TortoiseGit操作分支


例如:当切换到remotes/orgin/release-2.0远程分支的话,,并不是直接切换到远程分支上去了,

其实是自动先给remotes/orgin/release-2.0远程分支,新建一个release-2.0本地分支,在切换到本地分支上。

然后在该本地分支上写代码。

删除分支:TortoiseGit没有找到删除的地方,这里就可以配合Git命令行来操作了,就不要去纠结删除在哪里。


TortoiseGit stash save保存没有完成的工作


如何你在master分支上进行写代码,进行到一半,需要在master分支上进行其他操作,现在该怎么办呢??


TortoiseGit拉分支


7.1新建一个分支,右键-->tortoiseGit-->Create Branch

  

右键,你会发现当前的分支为你新建的newfunction分支了

7.2接下来,就开心新增加你的功能;我们再proprame.txt中不仅增加了show方法,还修改了metho方法

7.3提交我们的代码,此时我们发现这个新功能不行,存在很多漏洞等等问题。我们想回到之前的代码。怎么办呢?

7.4为了回到之前的项目,我们直接切回master分支。

先来看看现在的文件内容,新加的和修改的都在。

然后我们切换到master分支,右键-->tortoiseGit-->Switch/Checkout

选择master即可,然后确定

再来看看program中的代码是否回到了从前呢?

无论是修改,还是添加,都没影响到复原。这就是分支的作用。这个功能是不是让你省去了很多工作量呢。


TortoiseGit上传新的项目


  1. 创建一个版本库

创建一个文件夹GitDemo,然后  右键--Git Create repository here...

此处不用勾选Make is Bare

确定后,在GitDemo文件夹下回多一个.git文件夹【电脑要设置为显示隐藏文件夹】

此文件夹,尽量不要乱修改或删除。

2.创建一个文件,然后提交(commit)到版本库[这个操作可以在离线状态操作]

2.1选择Git Commit->"master"

2.2填写message,勾选要commit的文件,然后点击OK。会在弹出一个窗口点击close即可。

3.然后在program中添加一个新的方法method。当文件代码改变,那么文件会显示为一个红色感叹号

4.将新增的代码,提交到版本库中,参考2.1和2.2步。

5.查看日志

在日志中,文件更改的信息,都很清楚。

6.将代码推送(push)到云端,例如:github、oschina上面

1、如果在github上已经建立好了项目,那直接拷贝项目地址过来就ok

2、在github上新建立一个项目,请参考GitHub之新建项目(Create a New Repository).note

将电脑得代码push到云端。

右键-->tortoiseGit-->push

设置好URL,确定。然后开始push,输入用户名,输入密码就OK了

输入用户名,后面还要输入密码,然后等待成功。


用户名和密码问题


TortoiseGit在提交时总数会提示你输入用户名密码,非常麻烦。解决方案如下:

方法一:

[credential]

helper = store

保存,输入一次密码后第二次就会记住密码了


Tag的使用


Tag就是起到提醒自己而特意设的一个标记。

如下:如何某个地方是发布过版本的地方,你打Tag就可以很清楚的知道。


revert和reset版本回滚


reset(移动分支的指针)

reset命令把当前分支指向另一个位置,并且相应的变动工作区和暂存区。

revert

git revert用一个新提交来消除一个历史提交所做的任何修改。

  • git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
  • 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,减少冲突。但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入,产生很多冲突。关于这一点,不太理解的可以看这篇文章

下面用具体场景来具体说明怎么使用

1、如何你在修改了一些代码,但没有commit,但突然不想要了怎么办??

从这里可以看出,这些修改只在工作区中

一般这个我都使用图形化工具操作

这个操作让工作区回到上次提交的状态,还能针对某个文件这样做。

为什么是revert呢?不是应该使用reset吗?

2、如果修改已经commit到本地版本库了,如何撤销这次提交呢??

用命令行撤销commit,参考这个 http://zhyq0826.iteye.com/blog/1671638

图形操作

版本会退到上一个版本,但是可以看到“test”版本还在log里面,刷新就不见了


TortoiseGit操作submodule


克隆带子模组的版本库的步骤

克隆带子模组的git库,并不能自动将子模组的版本库克隆出来,对于只关心项目本身的数据,而不关心项目引用的外部项目数据的用户,这个功能非常好,数据没有冗余而且克隆的速度也很快。

第一步:克隆super主版本库

在工作区中克隆主主版本库后,会发现子模组的版本库并没有克隆,只有将存放子模组版本库的目录克隆下来了。

第二步:克隆子模组

如果需要克隆出子模组形式引用的外部库,首先需要执行Submodule Update操作。

在需要作克隆子模组的Git工作区中右击,选择“TortoiseGit->Submodule Update...”,点击“OK”即可。

操作后就会把子模组的版本库克隆下来。

如何做的提交主工程就能提交submodule????

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

TortoiseGit工具使用 的相关文章

  • 我可以忽略全局 .gitignore 吗?

    我的全局 gitignore 一般都很棒 但对于这个一次性项目 我不希望应用全局规则 如何删除这个怪异存储库的全局 gitignore 规则 在您的存储库中运行此命令 git config local core excludesfile f
  • 清理远程 Git 分支

    我已经将 SVN 存储库移至 Git 可能由于多次克隆 我现在只剩下一堆看起来像这样的分支 BranchA origin BranchA remotes BranchA remotes origin BranchA remotes orig
  • 将 Visual Studio 在线 Git 存储库集成到 Android Studio 1.0.2

    我正在使用 Visual Studio Online 进行开发过程 我想将我的 Android Studio 1 0 2 代码集成到其中 但是 据我所知 Android Studio 没有 TFS 插件 这就是为什么我想使用 Git 进行源
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • 如何恢复已删除的远程分支

    我们的远程主分支被删除 我有主存储库的本地副本 但它已经过时了 我可以通过将最后一个已知的提交哈希值插入 URL 来查看 github 中的分支 但未能成功恢复它 我尝试了几个步骤来恢复它 git reset hard 16deddc05c
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • 创建多个 git 分支的联合分支

    我希望能够在现有分支之上分层其他分支 并独立修改这些分支 这很有用 例如 允许将各个子项目的二进制文件统一到同一个项目中bin目录 一般来说 给定的文件仅存在于一层中 理想情况下 我想我会使用 unionfs 来完成此任务 但它必须以某种方
  • git am 和 git apply 有什么区别?

    Both git am https git scm com docs git am and git apply https git scm com docs git apply可用于应用补丁 看起来git am自动提交 而git apply
  • 为什么 Git Bash 无法运行我的可执行文件?

    I am on git for windows https github com git for windows 吉特 巴什 我无法在命令行上运行可执行文件 Pedr Abc 07 MINGW64 c dev ls sqlite3 exe
  • git rebase 吃了我的提交!为我翻译“git reflog”输出?

    我已经完成了五次提交 我想在推送它们之前将它们全部合并为一次提交 出于某种原因 我决定尝试通过与通常使用的不同的方式来做到这一点 FWIW 我试图按照此处的说明进行操作http gitready com advanced 2009 02 1
  • gerrit - git(pull、checkout、cherrypick)的用途是什么?

    在 Android 的 gerrit ex 中 link https android review googlesource com c 109934 要下载补丁 我看到4个选项 回购下载 checkout pull 择优挑选 它们之间有什
  • Heroku 没有更新 Rails 应用程序的 CSS

    我在 heroku 上更新 Rails 应用程序时遇到问题 我已经启动了我的应用程序 但我尝试更改 public stylesheets 中的 application css 文件 但每当我尝试推送到 heroku 时 CSS 都不会更改
  • 使用 git 将一系列小的合并从 master 压缩到我的分支中,同时保留对 master 的引用?

    我有一个非常复杂的合并要做 部分问题在于我浪费了太多时间 因此要纳入我的分支的更改量是巨大的 为了让事情变得更容易 我选择这样做git merge origin master 20 then git merge origin master
  • “git merge”和“git rebase”有什么区别?

    有什么区别git merge and git rebase 假设最初有 3 次提交 A B C 然后开发人员 Dan 创建了提交D 开发者 Ed 创建了提交E 显然 这一冲突应该以某种方式得到解决 为此 有两种方法 MERGE 两者都提交D
  • 如何使用 Mercurial 进行原始结帐?

    如何将工作目录状态恢复到存储库的新克隆的状态 显然我可以克隆我的存储库 但这似乎有点野蛮 使用 git 我会这样做 git clean xdn dry run to see what I m about to destroy git cle
  • 使用 C# 解码 Git 索引文件

    有没有关于Git索引文件内部结构的文档 从各种书籍中我知道它是二进制的并且包含暂存文件的 SHA 我知道 Git plumbing 命令有助于揭示索引内容 但是 例如 我自己使用 C 读取索引怎么样 我知道这个功能有几种实现方式 所以可以研
  • 有没有办法强制 git merge 始终使用外部合并工具?

    有没有一种方法可以配置 git merge 使冲突解决始终通过外部合并工具进行 我正在编写语义合并的配置 并且存在这样的情况 git 错误地处理了这些情况 但可以通过语义合并正确解决 两个开发人员在同一文件的两个不同位置添加了相同的方法 问
  • 使用 cron 作业推送到 GitHub - 权限被拒绝(公钥)

    我已经创建了一个 SSH 密钥 如下官方教程 https help github com articles generating ssh keys 00 将其添加到 GitHub 并创建一个 Bash 脚本 用于提交单个文件并将其推送到我在
  • 如何调试 git Remote set-url 不起作用

    我无法更改 git 远程 urlgit to https 如下图所示 git remote set url不工作 git remote v 来源 git github com userName repoName git 获取 原点 git
  • git repo 的 tar/untar 后,gitk 显示“本地未提交的更改,未签入索引”

    我有一个包含小型 git 存储库的目录 git status 和 gitk all 显示没有未提交的更改 如果我使用以下命令 tar 压缩该目录 tar czf git repo tar gz git repo 然后将此 tar 文件传输到

随机推荐

  • zynq ALSA

    设计参考的代码PS和PL端的下载链接如下 linuxkernel版本号4 4 基于Zedboard 的ADAU1761功放芯片 ADI公司kernel和hdlgit链接地址 Took Linux device tree is include
  • 镁光闪存颗粒对照表_内存颗粒型号识别

    容量 MB Samsung 三星 ETRON 钰创 Zentel 力积 Hynix 海力士 Elpida 尔必达 2MB N A EM636165TS 6G N A N A 8MB K4S641632N EM638165TS 6G A3V6
  • 面向对象以及特点

    历史 汇编语言 C语言 对象过程化 C Java javaScript Python PHP 面向对象编程思想 三大特征 1 抽象 封装 抽象是指强调实体的本质 内在的属性 在系统开发中 抽象指的是在决定如何实现对象之前的对象的意义和行为
  • 32通过tcp发送数组_西门子S71500与S7300PN的TCP通信(图文)

    加微信号 15021230050 邀请您加入 信控电气 微信群 点击文章最下方 阅读原文 加入超级工控技术群 免费学习PLC编程技术 包吃住还有工资 西门子S7 1500与S7 300PN的TCP通信 1 概述 2 自动化解决方案 2 1网
  • 摆动排序leetcode324

    给你一个整数数组 nums 将它重新排列成 nums 0 lt nums 1 gt nums 2 lt nums 3 的顺序 你可以假设所有输入数组都可以得到满足题目要求的结果 示例 1 输入 nums 1 5 1 1 6 4 输出 1 6
  • 【单片机】STM32F030硬件SPI的坑

    使用的是STM32F030F4P6 这是一个小封装的单片机 但是五脏俱全 很多功能 就是引脚不多 使用到SPI的时候感觉应该和以前用过的STM32F103系列是一样的 寄存器的结构几乎是完全一样的 寄存器操作的程序甚至都能兼容 但是在使用的
  • Flutter1.0实践要点(Dart语法回顾)

    Flutter1 0实践要点 Flutter 文档 Flutter widgets文档 实践要点 dart文件命名使用小写加下滑线 dart类命名使用驼峰 Dart语法 绝对定位widget Stack Positioned url包裹wi
  • A Survey of Learning on Small Data(二)

    本文是 A Survey of Learning on Small Data 的翻译 原文链接 小数据学习综述 4 几何角度 4 1 Frechet均值 4 2 欧几里得均值 4 3 非欧均值 4 3 1 Poincare质心 4 3 2
  • 面试常问:Hive分区与分桶的区别

    分区表与分桶表的区别 创建表时可以同时为表创建一个或者多个分区 我们在加载数据时为期指定具体的 分区 查询数据时可以指定具体的分区从而提高效率 分区表是把分区当成目录的 分区实际上是将表文件分成多个有标记的小文件以方便查询 分区表 在Hiv
  • Ubuntu下安装AndroidStudio

    前言 接触Ubuntu系统有一段时间了 对Ubuntu下软件的操作有了一定的了解 本文结合所学的知识 在Ubuntu系统下安装android开发工具 Android Studio 步骤 第一步 安装JDK 打开终端 使用快捷键 CTR AL
  • Result of ‘Stream.peek()‘ is ignored

    firstPublish getFunds stream filter firstFund gt adviceCodeSet contains firstFund getCode peek firstFund gt firstFund se
  • 不要再焦虑了:BATJ大厂给程序员们价值百万的职业规划(18-35岁,35岁以后)

    顺坡下山 另辟蹊径 虽然你感觉互联网程序员好像已经人满为患了 但中国很多其他行业还根本招不到什么像样的程序员的 只是现在制造业国企程序员待遇太低 一般也就万把块 比制造业其他工种稍微高一点 但比互联网低很多 只要肯降薪去这些国企央企 也算一
  • 浅论静态测试的价值

    曾经看过一篇介绍某静态测试工具的文章 说该工具可以发现所有的代码错误 我觉得很好奇 问 如果我写了一个加法函数 把加号写成减号 如int add int a int b return a b 可以找出来吗 答 这是代码功能错误 当然不能找出
  • Qt每日小结——QListWidget使用总结

    最近需要使用QListWidget完成一个样本输入显示及交互的功能 需要实现的功能基本是这样的 点击添加样本 将txt文件名输入到左侧的列表中 单击 shift ctrl多选item后点击移除样本 将样本从列表中移除 点击清空列表 则将列表
  • "Access denied for user 'root@localhost' 试一下你的mysql是不是用任何密码都可以登录,如果是的话这里...

    https blog csdn net light breeze article details 82070222 花了三小时 竟然是因为这个 转载于 https www cnblogs com MarsMercury p 11586010
  • List接口简介

    List接口简介 List是Collection的子接口 其最大的特点是允许保存有重复元素的数据 该接口的定义如下 public interface List
  • kafka如何动态消费新增topic主题

    一 解决痛点 使用spring kafka客户端 每次新增topic主题 都需要硬编码客户端并重新发布服务 操作麻烦耗时长 kafkaListener虽可以支持通配符消费topic 缺点是并发数需要手动改并且重启服务 对于业务逻辑相似场景
  • 蓝桥杯算法训练VIP-阿尔法乘积

    题目 题目链接 题解 实现题 按着题目描述实现就行了 很坑的一点是题目规定数据量6e6 但是给的样例是十位数 离谱 开个longlong 代码 include
  • Python爬虫及网络编程相关面试题整理

    1 你用过的爬虫框架或者模块有哪些 谈谈他们的区别或者优缺点 Python自带 urllib urllib2 第 三 方 requests 框 架 Scrapy urllib和urllib2模块都做与请求URL相关的操作 但他们提供不同的功
  • TortoiseGit工具使用

    TortoiseGit clone commit push pull 3 1 克隆项目 打开资源管理器 我的电脑 计算机 进入规划好的某个目录中 然后在空白处点击鼠标右键 选择 TortoiseGit gt 克隆 Clone 弹出克隆项目对