【版本控制工具】Git急速入门

简介: 【版本控制工具】Git急速入门

1.Git简介

1.1.什么是Git

  • Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
  • Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
  • Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

1.2.Git与SVN区别

  • Git是分布式的,SVN不是:这是Git和其他非分布式版本控制系统,如SVN、CVS最核心的区别。
  • Git把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的辕信息隐藏在一个类似SVN、CVS等文件夹里。
  • Git分支和SVN的分支不同:分支在SVN中一点也不特别,其实他是版本库的另一个目录。
  • Git没有一个全局的版本号,SVN有:目前为止跟SVN相比Git最缺少的一个特征。
  • Git的内容完整性要大于SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。



a8ffa82d692d46e385b44f668d2bbdec.jpg


2.Git工作流程

2.1.Git的工程流程

  • 克隆Git资源作为工作目录
  • 在克隆的资源上修改添加文件
  • 如果别人更新了代码文件,你可以拉取最新的资源
  • 在提交前查看修改
  • 提交修改
  • 在修改完成后,如果发现错误,可以撤回并且再次修改并提交



8ea637a9bf4f46b98a26c01eb32fdb07.jpg

3.Git工作区、暂存区和版本库

3.1.Git工作区、暂存区和版本库

  • 工作区:就是自己电脑中能看到的目录,工作空间。
  • 暂存区:英文叫stage和index,一般存在.git目录下的index文件中,所以把暂存区有时也叫索引区。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

3829a5a7ef5143039bdaa9bdbb654069.jpg

图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage/index),标记为 “master” 的是 master 分支所代表的目录树。

图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。
  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
  • 当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。
  • 当执行 git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
  • 当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

4.Git创建仓库

4.1.git init

Git 使用git init命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以git init是使用 Git 的第一个命令。
在执行完成git init命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。
  • 使用当前目录作为Git仓库
git init
  • 使用我们指定目录作为Git仓库
git init newrepo
  • 将文件添加到暂存区
git add ./*
  • 将暂存区里的文件提交到本地仓库
git commit -m "提交说明"

4.2.git clone

我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)
  • 克隆仓库的命令格式为
git clone <repo>
  • 如果我们需要克隆到指定的目录
git clone <repo> <directory>
  • 参数说明
  • **repo:**Git 仓库。
  • **directory:**本地目录。

4.3.git config

git 的设置使用 git config 命令
  • 显示当前的git信息
git config --list
  • 编辑 git 配置文件
git config -e    # 针对当前仓库 
git config -e --global   # 针对系统上所有仓库
  • 设置提交代码时的用户信息
git config --global user.name "runoob"
git config --global user.email test@runoob.com


5.Git基本操作

88a1a017a94240e7995e877677eb7a8b.jpg

(1)提交与修改

命令 说明
git add 添加文件到仓库
git status 查看当前仓库状态,显示有变更的文件
git diff 比较文件的不同,即暂存区和工作区的差异
git commit 提交暂存区到本地仓库
git reset 回退版本
git rm 删除工作区中的文件
git mv 移动或者重命名工作区文件

(2)提交日志

命令 说明
git log 查看历史提交记录
git blame 以表格的形式插卡你指定文件的历史修改记录

(3)远程操作

命令 说明
git remote 远程仓库操作
git fetch 从远程获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并

(4)创建分支命令

git branch 分支名

6a69a947a6594b01bd7d7aa08f57529f.jpg

(5)切换分支

git checkout 分支名
git checkout -b 分支名 #创建新分支并且切换到此分支

1bf705741c014d90af9ac43e40c89879.jpg

(6)合并分支

get merge

fd92a3413cdc4c26a2cca2484d048f4f.jpg

(7)删除分支

git branch -d 分支名


8e3246fba4754855902b79f7fc0ea896.jpg

(8)git文件的删除

git rm 文件名


299bc8d987284655b86e52e8cc931d03.jpg

如果只是 git rm --cache 仅删除暂存区里的文件 如果不加–cache 会删除工作区里的文件 并提交到暂存区

(9)git log命令

git log -数字 #表示查看最近几次提交的不同点

d346613f466544b7b1a433ca04345cb8.jpg

git log -p -数字 #表示最近几次提交的不同点

b4b30fc7ec754c2cb21364b8c0d2f872.jpg

git log --graph #以一个简单的线串联起整个提交历史

7c9fe6f04a004282858edc8103de4bac.jpg


相关文章
|
2月前
|
开发工具 数据安全/隐私保护 git
记录一次使用git工具拉取coding上代码密码账号错误的经历
这篇文章记录了作者在使用Git工具从Coding平台克隆项目时遇到的账号密码错误问题,并分享了通过清除电脑凭证中错误记录的账号密码来解决这个问题的方法。
记录一次使用git工具拉取coding上代码密码账号错误的经历
|
2月前
|
敏捷开发 存储 开发工具
版本控制系统的选择:Git与SVN的比较
【8月更文挑战第14天】Git和SVN都是优秀的版本控制系统,它们各自具有独特的优势和适用场景。在选择版本控制系统时,需要根据具体的项目需求、团队特点和开发模式来综合考量。对于需要分布式团队协作、高效处理大型项目或采用敏捷开发模式的团队来说,Git是一个更好的选择。而对于传统团队、集中式开发或简单项目来说,SVN可能更加合适。无论选择哪种版本控制系统,都应该充分利用其提供的工具和功能来提高代码质量和开发效率。
|
12天前
|
存储 Linux 开发工具
掌握版本控制的艺术:Git 技巧深度解析
在软件开发中,版本控制对于代码管理和团队协作至关重要。Git 作为最流行的分布式版本控制系统,凭借其强大的功能和灵活性成为开发者必备工具。本文深入探讨 Git 的高级技巧和最佳实践,包括交互式暂存、撤销提交、合并冲突处理等,帮助你更高效地使用 Git。通过遵循清晰的提交信息、保持提交原子性、利用分支开发等最佳实践,开发者可以更好地管理代码库,提升协作效率。
|
23天前
|
开发工具 git 开发者
掌握版本控制的艺术:Git 与 GitHub 的高效使用指南
在软件开发中,版本控制对于代码管理和团队协作至关重要。本文详细介绍了 Git 的核心概念与命令,包括初始化、创建仓库、文件跟踪、分支管理和远程仓库操作。同时,探讨了如何利用 GitHub 进行项目组织、代码审查及自动化工作流。通过遵循最佳实践,如频繁提交、清晰的信息记录和合理使用分支,开发者可以提升工作效率和团队协作能力,确保项目的持续成功。
|
5月前
|
项目管理 开发工具 git
版本控制与源代码管理:在 Visual Basic 项目中使用 Git
【4月更文挑战第27天】本文介绍了在Visual Basic项目中使用Git进行版本控制和源代码管理的重要性。Git作为一个流行的分布式版本控制系统,具备分布式架构、高效性能和强大分支管理等特点。在项目中,需先安装Git,然后初始化仓库、添加文件和提交更改。常用操作包括查看状态、日志、创建及切换分支和合并分支。团队协作时,借助远程仓库和推送拉取命令实现代码共享。虽然Git有学习曲线,但其优势在于强大的功能、灵活性和社区支持,能提升开发效率和代码质量。通过学习和实践,开发者可充分利用Git优化协作和项目管理。
62 1
|
7天前
|
SQL 缓存 测试技术
代码管理工具之GIT:重新温习一下
代码管理工具之GIT:重新温习一下
|
1月前
|
图形学 开发工具 git
Unity与版本控制:游戏开发团队如何利用Git打造高效协作流程,实现代码管理的最佳实践指南
【8月更文挑战第31天】版本控制在软件开发中至关重要,尤其在Unity游戏开发中,能提升团队协作效率并避免错误。本文介绍如何在Unity项目中应用版本控制的最佳实践,包括选择Git、配置项目以排除不必要的文件、组织项目结构、避免冲突、规范提交信息以及使用分支管理开发流程,从而提高代码质量和团队协作效率。
46 1
|
2月前
|
项目管理 开发工具 git
|
2月前
|
JavaScript IDE 前端开发
前端开发工具配置 nodejs & git & IDE
前端开发工具配置 nodejs & git & IDE
|
2月前
|
开发工具 git
成功解决:fatal: detected dubious ownership in repository at ‘E:/workspace/CSMarket‘。如何使用git工具通过命令行的形式
这篇文章分享了作者在使用Git工具初始化本地仓库时遇到的权限问题,提供了通过命令行解决Git仓库权限问题的方案,并介绍了如何使用Git命令行初始化项目、添加文件、提交以及关联远程仓库的步骤。
成功解决:fatal: detected dubious ownership in repository at ‘E:/workspace/CSMarket‘。如何使用git工具通过命令行的形式