Git 基本操作,学习用 sourceTree 可视化创建你的仓库和提交文件

1,193 阅读12分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是Linux之父 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

版本控制系统的作用

  • 备份文件 就像我们用U盘备份我们的文档、电影一样,写代码的时候也需要有一个东西来帮我们做一个备份。每当我们对文件有修改的时候,提交我们的修改,让版本管理工具进行一个保管。万一哪天我们的电脑坏了还能从备份里面恢复回来。其实备份是我们项目进行中一个最基本的事情。因为每天我们的工作结果都保存在这个文件当中,如果有一天有什么不可预料的因素导致我们的文件丢失了,这种损失是非常大的。
  • 记录历史 我们说到版本管理工具可以帮我们保管文件,但是版本管理工具的“保管”和网盘、U盘的保管不一样,网盘、U盘帮我们保留的是最新的一个文件状态,而历史的一个状态是找不回来的,修改记录也是找不回来的。比如说网盘里的某一个文件是用来记录我每天的日记,有一天呢我想知道我日记中某一个地方某一行是哪天几点钟加上去的,这个信息呢网盘和U盘是没办法高诉我的,除非我自己在我的内容边上去记录。而版本管理工具,我们每一次的修改 后提交到版本管理工具,它都会留一个备份,他会记录这个修改是在几点几分以及是谁做的修改。那么这样的话,当我们需要去回溯或者查找这些信息的时候,版本管理工具是可以告诉我们的。
  • 回到过去 我们可以让我们的文件回到任意过去的一个时间点的一个状态,使用版本管理工具就再也不用担心我们删除或者搞坏我们的重要文件了。
  • 多端共享 我们托管的文件在不同的设备上都可以拿到或者访问。
  • 团队协作 版本管理工具可以帮助我们迅速解决团队开发中的冲突,将负面影响降低到最小。

版本管理工具发展历史

在这里插入图片描述

GitHub

GitHub是通过Git进行版本控制的软件源代码托管服务平台,由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails编写而成。

GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开或私有的代码仓库,但付费用户支持更多功能。

截止到2015年,GitHub已经有超过两千八百万注册用户和5700万代码库。事实上已经成为了世界上最大的代码存放网站和开源社区。

2018年6月4日晚上,美国科技公司微软宣布以75亿美元的股票收购GitHub。

Git和SVN的对比(转载)

SVN简介

SVN集中式版本控制系统,主要是为了多人协同开发项目,管理代码。也可以管理个人代码。也叫程序界的”后悔药“。

SVN(是subversion的简称)是近年来一款基于C/S架构的,非常优秀的版本控制器(可以简单的理解为管理代码的工具,在多人协同开发的时候,尤其重要),与传统的CVS(90年代左右,一个非常优秀的代码管理器,是代码管理器的鼻祖)管理工具类似。

SVN可以随着时间的推移来管理各种数据,这些数据被放置在一个SVN管理的中央仓库(所有的代码的集合)里面。同时SVN会备份并记录每个文件每一次的修改更新变动。这样就开发者就可以回归到任何一个时间点的某一个旧的版本(对于SVN,没修改一次文件,SVN就会创建一个叫做版本的概念,是从0 开始自增的序列)。当然也可以指定文件的更新历史记录(index.php)。

需要注意的是SVN严重的依赖服务器端,当服务器端无法使用的时候,版本控制也就无法再使用。

对比Git和SVN

  1. GIT是分布式的,而SVN是集中式的
  2. GIT把内容按元数据方式存储,而SVN是按文件:因为git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。​
  3. GIT分支和SVN的分支不同:svn会发生分支遗漏的情况,而git可以同一个工作目录下快速的在几个分支间切换,很容易发现未被合并的分支,简单而快捷的合并这些文件。
  4. GIT没有一个全局的版本号,而SVN有
  5. GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。 在这里插入图片描述

集中式和分布式的区别:

  • 集中式版本控制系统:版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。集中式版本控制系统最大的毛病就是必须联网才能工作。
  • 分布式版本控制系统:分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

为了方便“交换”大家的修改,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但没有它大家也一样干活,只是交换修改不方便而已。 分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。 本节内容转载自:svn与git的区别(总结)_大豆博文-CSDN博客 blog.csdn.net/qq_40143330…

Git安装

  • 下载Git 好吧,在此之前已经安装过,本节就不再详解,需要的自行baidu/google。
  • 配置用户信息 git是分布式版本控制系统,所以每个系统都需要报一下自己的家门,比如说你的名字和你的邮箱。
 git config #查看本机是否配置了个人信息
 git config --global user.name "……" #定义全局的用户名
 git config --global user.email "……" #定义全局的邮件地址
 git config --list #查看配置信息

global的意思表明你自定义了这台机子上的所有git仓库都会使用这个配置;当然我们可以针对某个仓库来配置不同的用户名和邮箱。 在这里插入图片描述

Git的客户端GUI

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,支持创建、克隆、提交、push、pull 和合并等操作。

SourceTree拥有一个精美简洁的界面,大大简化了开发者与代码库之间的Git操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。

SourceTree拥有完整的Git功能:

  • 通过一个简单的用户界面即可使用所有的Git命令
  • 通过一次单击,即可管理所有的Git库,无论是托管的还是本地的
  • 通过一次单击,即可进行commit、push、pull、merge等操作
  • 一些先进的功能,如补丁处理、rebase、shelve、cherry picking等
  • 可以连接到你托管在Bitbucket、Stash、Microsoft TFS或GitHub中的代码库

可自行到SourceTree官网下载食用。 在这里插入图片描述

创建仓库、提交文件

主要内容及对应命令

  • 初始化版本库 git init
  • 添加文件到版本库 git add git commit
  • 查看仓库状态 git status

分别使用图形化界面和命令行的方式演示创建仓库、提交文件的操作,先创建本地仓库,然后再演示创建远程仓库。

sourceTree 图形化界面方式创建仓库

打开sourceTree 在这里插入图片描述 点击Create,创建新的仓库----这一步其实是通过git init这个命令来初始化版本库 在这里插入图片描述 在这里插入图片描述 在新建的空仓库里添加一个测试文本。 在这里插入图片描述 编辑并保存。 在这里插入图片描述 此时可以看到未暂存文件里有我们刚刚新建的文件“firstGitFile” 在这里插入图片描述 右键该文件,选择添加,把这个文本添加到已暂存文件里----这一步主要通过git add命令实现添加 在这里插入图片描述 文本已经添加到已暂存文件 在这里插入图片描述 输入提交描述,点击提交,把文本提交到版本库----这一步执行的命令是git commit 在这里插入图片描述 在这里插入图片描述 分支这里可以找到我们刚刚成功提交的文件,并且可以看到提交和修改的信息。 至此,已经完成图形界面形式的创建仓库、提交文件。 仔细观察图形界面方式的git操作流程和各步骤所执行的命令会有助于我们理解git。 在这里插入图片描述 回到顶部👆

命令行方式创建仓库

点击命令行模式,就可以打开Git Bash,进行命令行操作 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

涉及到的linux指令

  • 显示当前在那个目录下 pwd
  • 展示该目录下所有文件的详细信息 ll

返回上一目录,使用命令行的方式创建文件,并且初始化版本库

在这里插入图片描述 涉及到的linux指令

  • 返回上级目录 cd ..
  • 创建目录 mkdir **

命令有点多,窗口盛不下了,我们刷新一下窗口 在这里插入图片描述 在这里插入图片描述 总结linux的三种清屏方式(转载)

  • 刷新终端(屏幕) clear 这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。一般都会用这个命令
  • ctrl+l(等价clear)
  • 清空终端 reset

这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。

在这里插入图片描述 在这里插入图片描述

本节内容转载自:linux 清屏命令(3种方式)_magoyang的博客-CSDN博客 blog.csdn.net/magoyang/ar…


在新建的“learnGitCommandLine”文件下 初始化版本库 在这里插入图片描述 涉及到的linux指令

  • 显示所有文件及目录(包括隐藏文件) ls -a
  • 输入 echo "**"
  • 管道追加 >>
  • 将输入的内容追加到test.txt文件下 echo "git repo2" >> test.txt
  • 输出当前文件的内容 cat **

用命令行的方式将test.txt添加到版本库

  • 添加文件到版本库 git add ** :提交单个文件 / git add :提交所有修改的文件 git commit -m "**"
  • 查看仓库状态 git status
On branch master 
# 在主分支
nothing to commit, working directory clean 
# 说明本地的所有修改都已经提交到主分支,工作目录是干净的(clean),反之这个仓库/目录就是脏的(dirty)

在这里插入图片描述

VSCode 中使用 git

VSCode 配置Git(转载)

在命令面板中没有找到 git:clone命令,发现是vscode的git配置没有做好。下面是在vscode中使用git前要做的相关配置

vscode中对git进行了集成,很多操作只需点击就能操作,无需写一些git指令。

不过这就需要你对vscode进行配置。下面我会讲到git的配置与免密码上传github。

一、安装Git管理工具,可上官网安装,安装路径git-scm.com/,安装路径默认C:\P… Files\Git,可自行修改,这里我是安装在D:\Program Files\Git。

二、安装完Git之后,如图配置好环境变量path路径的信息,一般会自动配置成功,配置完成后电脑就可以使用Git了。

1632707638(1)_副本.jpg 三、要想在VS Code里面使用Git需要在编辑器内配置git.path

配置步骤:在编辑器的文件->首选项->设置->搜索git.path->点击编辑->找到你的电脑git的安装目录,找到里面的bin文件夹,里面的git.exe文件把该文件的完整路径复制下来 在这里插入图片描述还有bah.exe的路径 在这里插入图片描述转载自:VSCode配置Git随记_开发工具_sam的博客-CSDN博客 blog.csdn.net/weixin_4096…

从 GitHub 迁出已存在项目

Ctrl + Shift + P打开命令面板,输入git:clone 在这里插入图片描述单击git:clone 在这里插入图片描述输入想要迁出的项目地址,回车 在这里插入图片描述回车,然后选择一个文件夹,将迁出的项目放入该文件夹中 在这里插入图片描述在这里插入图片描述 over

如何删除旧的远程地址添加新的远程地址

1. 首先在需要查看的项目中右键选择 “Git Bash Here”,弹出命令框。

2. 输入“git remote -v”查看项目远程地址。

3. 通过命令先删除再添加远程仓库

git remote rm origin // 删除旧的远程地址
git remote add origin ******   // 添加新的远程地址

参考