玩转Git: 程序员的日常手册

这篇具有很好参考价值的文章主要介绍了玩转Git: 程序员的日常手册。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Git简介:

Git是一个分布式版本控制系统,也是一个开源项目,最初为了帮助Linux内核开发。Git主要着重于数据完整性,数据的离散存储以及支持非线性开发,例如多个并行的散射分支。它具有超强的合并和分支操作。

二、开始使用 Git

在开始之前,我们需要首先在Git官方网站安装 Git。完成后,打开你的终端(Terminal),输入以下命令进行配置:

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱地址"

(当你首次使用git时,需要设置你的用户名和邮箱,这些信息将用作你计算机上git的识别标志。如果你拉取那些需要登录权限的远程仓库时,git将默认使用这些配置的邮箱和用户名进行登录,需要你手动输入密码,也可以不配置,需要登录时会让你手动输入用户名、邮箱、以及密码。)

三、创建新仓库

在你的工作目录下新建一个仓库很简单,只需以下两步:
1,创建一个新的目录,进入,然后运行 git init,以创建一个新的仓库。
2,将你的项目复制到这个目录下。

四、克隆仓库

如果你想获取一个已创建的 Git 仓库的副本,例如,你想为一个开源项目贡献代码,可以使用 git clone 命令。
例如:git clone https://github.com/user/repo.git

五、基本workflow

1、你的本地仓库由三部分构成:工作目录、暂存区(Index)以及头部(HEAD)。
在Git中,有三个工作区的概念:Git 仓库、工作目录和暂存区。-
工作目录:就是你在电脑里能看到的目录。
暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
Git 仓库:工作目录有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
这三部分的交互关系可参考以下示意图:
玩转Git: 程序员的日常手册,JAVA,git,java,gitlab
2、添加和提交
你可以提出更改(把它们添加到暂存区),使用如下命令:git add <filename> 或者 git add *
要提交这些更改,执行:git commit -m "代码提交说明信息"
3、推送更改
你的更改现在已经在本地仓库中。要将这些更改推送到远程仓库,执行:

git push origin master

4、"暂存"的使用
Git提供了一个叫做 stash 的命令,可以把当前工作的暂存状态保存起来,这样你就可以随时切换到其他分支,做其他的工作,然后再回来继续之前的工作。
当你想保存当前的工作状态,只需输入一下命令:

git stash

你可以多次执行git stash,保存多个临时现场。恢复暂存的现场有两个办法,一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;另一种方式是用git stash pop,恢复的同时把stash内容也删了:

git stash apply 
git stash drop

或者

git stash pop

六、合并操作

当你已经完成了新功能的开发并想将其汇入主分支以供其他人使用时,你需要执行合并操作。假设你想将feature分支合并到master分支,可以通过下列步骤:

git checkout master
git merge feature

如果Git可以自动合并,你只需简单地提交即可,不需要进一步操作。如果合并成功,即merge没有冲突,feature分支可以删除了。

七、解决冲突

然而,有些情况下,Git无法自动处理合并。这就是所谓的冲突(conflicts)。编辑器中会显示冲突的文件,你可以手动解决冲突。解决完冲突后,再提交,合并完成。Git中的冲突解决,我们可以通过以下步骤进行:
1,Identify the conflict:
使用 git status 命令,它会显示所有冲突的文件。
2,Open the conflict file:
当你打开那个冲突的文件,你会看到以下的内容:

  <<<<<<< HEAD
  This is some content to mess with my plans
  =======
  This is going to be a problem
  >>>>>>> new-branch

这些内容的意思是在 ======= 线上的部分(HEAD)是你当前分支的版本,而线下的部分(new-branch)是要合并进来的版本。
3、Resolve conflict:
你需要手动确定保留哪个版本,或者可能你需要把这两者包含的变更合并在一起。修改完成后,删除 <<<<<<< HEAD, =======, >>>>>>> new_branch这三行。
4、Commit the changes:
解决冲突后,使用 git add . 将改动添加到暂存区,然后使用 git commit -m “conflict resolved” 提交。

八、git回滚

Git提供了多种方法可以帮助我们对代码仓库进行回滚,当你想撤销某个提交时,可以使用git reset命令或 git revert命令。这两个命令都有各自的用途,但它们的工作方式略有不同。下面我将以示例的方式一一介绍。
1,使用git reset 回滚到特定的提交
git reset可以回滚到你指定的任何一个commit。假设我们有5个commit,现在我们想回滚到第3个commit,首先我们可以使用git log命令来查看所有的commit历史。

$ git log --oneline
d0e2f17 (HEAD -> master) Fifth commit
5b6e445 Fourth commit
8a2a619 Third commit
fd4bfd8 Second commit
ecc1899 First commit

这显示了所有的commit以及它们的哈希值。现在,我们可以使用git reset --hard 8a2a619命令来回滚到“Third commit”。这将会丢弃所有在第3个提交之后的修改。
注意,git reset --hard是一个危险的操作,因为它会丢弃所有未提交的修改。如果你只是想撤销commit,但是保留修改,你可以使用git reset --soft
2、使用git revert 回滚某个提交
git reset不同,git revert会生成一个新的commit来撤销指定的提交,这样做的好处是它不会改变项目的历史。让我们通过一个示例来解释这种情况。如果我们想撤销“Fourth commit”,我们可以运行git revert 5b6e445
这将打开一个新的文本编辑器窗口,你需要在其中输入新创建的commit的信息。一旦你保存并关闭编辑器,git revert将生成一个新的commit来撤销“Fourth commit”。
通过这两个方法,你可以根据需要选择进行回滚操作。每种方法都有其优点,选择哪种取决于你的具体需求。

Git是一个非常强大的工具,只有不断去实践和探索,才能更深入理解和熟练使用这个工具。最后,希望这篇文章对你有所帮助,加油!文章来源地址https://www.toymoban.com/news/detail-765123.html

到了这里,关于玩转Git: 程序员的日常手册的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 12个优秀GUI Git客户端,程序员必备!

    尽管许多用户可以从命令行轻松地使用Git,但有多种GUI客户端可以大大加快你的工作流程,尤其是在你不熟悉平台的情况下。 如果你正在寻找理想的客户端来管理你的Mac上的仓库,本文列出了适用于Mac OS X或Windows系统的最佳GUI Git客户端。 https://desktop.github.com/ GitHub Desktop是由

    2024年02月04日
    浏览(35)
  • Kali中搭建vulhub时镜像git失败_vulhub git,每个程序员都必须掌握的8种数据结构

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新网络安全全套学习资料》

    2024年04月27日
    浏览(23)
  • 程序员怎么玩转Linux

    Linux下可以使用Python编写爬虫程序,常用的爬虫框架有Scrapy和BeautifulSoup。 Scrapy是一个基于Python的开源网络爬虫框架,可以快速高效地从网站上获取数据。它提供了强大的数据提取和处理功能,支持异步网络请求和分布式爬取等特性。 BeautifulSoup是一个Python库,可以从HTML或XM

    2024年02月07日
    浏览(28)
  • 【程序员英语 代码提交】C++工程师的代码提交艺术:git commit 时 精确表达与最佳实践

    在软件开发的世界里,代码提交(Code Commit)不仅仅是一个简单的行为,它是一种艺术,一种传达你工作的方式。当一个C++工程师提交代码时,他们不只是在保存代码的当前状态,而是在向整个团队传达一个信息:这段代码是什么,为什么要这样做,以及它是如何改变项目的

    2024年02月02日
    浏览(44)
  • 程序员日常|为什么我在开发工作中偏爱这款键盘?

    最近一直不断地有粉丝朋友们私信我,问我该如何给自己挑选一款适合程序员工作的键盘,于是今天来给大家介绍下我用的键盘。 程序员作为一个需要长时间敲代码的职业,没有一个趁手的键盘是不行的,往小了说是折损工作效率,往大了说就是在损伤自己的手,是对自己的

    2024年02月02日
    浏览(28)
  • 黑马程序员3天带你玩转Python深度学习TensorFlow框架学习笔记

    这是黑马程序员3天带你玩转Python深度学习TensorFlow框架学习笔记 视频链接: 黑马程序员3天带你玩转Python深度学习TensorFlow框架 学习目标:知道深度学习与机器学习的区别 区别:深度学习没有特征提取 特征方面 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专

    2024年02月01日
    浏览(31)
  • 1024程序员节带你玩转图片Exif信息获取之JavaScript

    目录 一、前言 二、背景 三、Exif.js          1、Exif.js 简介 2、Exif.js 引入 四、多场景展示数据获取 1、原始图片直接获取  2、base64 编码文件加载  3、文件上传的方式加载  五、总结        1024是2的十次方,二进制计数的基本计量单位之一。1G=1024M,而1G与1级谐音,也有一

    2024年02月20日
    浏览(28)
  • java程序员的就业指导(重点)

    想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内容写到你的简历中,当然更需要的是你在面试的时候向

    2024年02月09日
    浏览(18)
  • AI会完全替代Java程序员吗?

    作为一个 Java 开发的从业人员,以我自己对GPT的使用来说, AI 现阶段想要完全取代程序员,那是完全不可能的。 当然,随着算力以及数据的训练越来越多,以后不好说,个人觉得大部分基础代码完全可以使用 AI 生成, 但是当涉及到非常复杂的业务的时候,AI 还是很难做到(

    2024年01月22日
    浏览(21)
  • Java程序员的AI框架,它来了

            在本文中,我们将探索Spring AI——一个为Java开发者社区设计的革命性的人工智能框架。了解其核心功能、如何集成到现有的Spring应用中,以及它如何简化AI项目的开发。         在当今这个由数据和智能驱动的时代,人工智能(AI)已经成为推动业务创新和优化用

    2024年04月25日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包