【Git版本控制】Git版本控制工具使用教程和远程仓库的上传拉取操作详解

2021年05月04日 18:02:01阅读数:196博客 /  一纸荒凉* Armani / other

【Git版本控制】Git版本控制工具使用说明和规范教程

windows环境下的Git版本控制工具使用说明和规范。

一、Git的安装与使用

1.1 前言

SVN是集中式版本控制系统,版本库集中放在中央服务器上,而干活时用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作。

Git则是分布式版本控制系统,即它就没有中央服务器,每个人的电脑就有一个属于自己的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。最终,各自将本地分支先合并,再将合并后的分支推向同名的远程库。

Git和GitHub的区别:Git是分布式版本管理工具,而GitHub是一个网站,可以在github上建立一个网上仓库,然后提交自己的代码到该网上仓库,这样你的每次提交,别人也都可以看到你的代码,同时别人也可以帮你修改你的代码,这种开源的方式非常方便程序员之间的交流和学习。

GitHub是一个非常适合程序员交流的网站,很多国际上的技术大牛都在github上有自己的开源代码,其他人只要申请个账号就可以随意的看到这些大牛写的程序。同时国内的很多互联网公司如百度,阿里等也在github上公布有开源的代码。

Git本地有三个工作区域:工作目录、暂存区、资源库。如果加上远程的Git库就可以分为四个工作区域

  • 工作区(Workspace):就是平时存放项目代码的地方

  • 暂存区(Index/Stage):用于临时存放对文件的改动,事实上就是一个文件,保存即将提交到文件列表信息

  • 资源库(Repository):就是安全存放数据的位置,这里有你提交到所有版本的数据,期中HEAD指向最新放入仓库的版本

  • 远程仓库(Remote Directory):就是托管代码的服务器,简单地说就是项目组中的一台电脑用于远程数据交换

工作区、本地库、远程库三者之间的工作原理及流程如下图:

1.2 版本控制

  • 日常生活中,在word里编辑文字,使用Ctrl + z撤销,或者点击撤销按钮,其实也是一个版本控制的例子
  • 我们在开发中修改代码,问了避免出错,都将其先复制一份在进行代码的开发和修改,我们称之为版本更新,一般命名为v1.0 v1.1 ,大的版本变更则命名为 v2.0 v3.0。有必要,因为人工的去处理不同的版本,做相应备份会很麻烦。
  • 对于git来说,版本控制功能更加强大,更加便于版本更新迭代的操作。

1.3 Git安装流程

初次接触Git的用户,请抽出几分钟时间看一下https://git-scm.com/docs 的介绍文档,相信磨刀不误砍柴工。

本文针对Window平台的Git客户端的安装和使用。

Git 下载地址:https://git-scm.com/downloads

window版本下载:https://git-scm.com/download/win

下载完成后,双击进行安装

安装 Git 并选择所有默认选项,安装完毕后,在系统的任意地方右键点击Git Bash Here在命令行工具中运行 git,如果显示使用信息,则安装完成。

1.4 Git初始配置

在开始使用 Git 之前,你需要配置 Git。在命令行工具中运行以下每行,确保所有选项都已被配置好。

  1. # 设置你的 Git 用户名
  2. git config --global user.name "<Your-Full-Name>"
  3. # 设置你的 Git 邮箱
  4. git config --global user.email "<your-email-address>"
  5. # 确保 Git 输出内容带有颜色标记
  6. git config --global color.ui auto
  7. # 对比显示原始状态
  8. git config --global merge.conflictstyle diff3
  9. git config --list

Git 与代码编辑器
最后一个配置步骤是让 Git 能与你的代码编辑器结合使用。以下是三个最热门的代码编辑器。

  1. #Atom Editor 设置
  2. git config --global core.editor "atom --wait"
  3. #Sublime Text 设置
  4. git config --global core.editor "'C:/Program Files/Sublime Text 2/sublime_text.exe' -n -w"
  5. #VSCode 设置
  6. git config --global core.editor "code --wait"

1.5 Git工作流程

  1. 在工作目录中添加、修改文件;
  2. 将需要进行版本管理的文件放入暂存区域;
  3. 将暂存区域的文件提交到Git仓库;
  4. 提交到远程仓库中

因此,Git管理的文件有三种状态,已修改(modified)、已暂存(staged)、已提交(committed)。

二、Git的使用操作

序号 Git命令 说明
1 git init 初始化本地版本库。
2 git status 查看当前工作区和暂存区文件的状态。
3 git add <file>... 可以将文件添加到暂存区。
4 git commit -m ' ' 提交更新。

2.1 初始化Git仓库

  • 这个仓库会存放,git对我们项目代码进行备份的文件
  • 在项目目录右键打开 git bash
  • 命令: git init

2.2 Git用户信息配置

  • 就是在git中设置当前使用的用户是谁

  • 每一次备份都会把当前备份者的信息存储起来

  • 命令:

    • 配置用户名:git config --global user.name "xiaoming"
    • 配置邮箱: git config --global user.email "xm@sina.com"

    查看是否配置成功

2.3 把代码存储到.git仓储中

工作区、暂存区以及版本库三者之间的关系。

工作区:就是你在电脑上看到的目录,比如目录testgit下的所有文件(.git版本库目录除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

暂存区(stage):工作区有一个.git隐藏目录,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有就是Git为我们自动创建的第一个master分支。

在Git中每次提交都分为两个步骤:

第一步:用add命令将文件添加到版本库的暂存区

第二步:用commit命令把暂存区的所有内容提交到当前分支上

    1. 把代码放到仓储的门口
    • git add ./readme.md 所指定的文件放到大门口
    • git add ./ 把所有的修改的文件添加到大门口
    1. 把仓储门口的代码放到里面的房间中去
    • git commit -m "这是对这次添加的东西的说明"
    1. add和commit合并写法 可以一次性把我们修改的代码放到版本库
    • git commit --all -m "一些说明"

    • —all 表示是把所有修改的文件提交到版本库

  1. git add ./readme.md // 添加暂存区
  2. git commit -m '提交更新说明' // 提交更新
  3. git status // 查看当前状态

2.4 查看当前状态

当暂存区域已经准备妥当可以提交时,在此之前,请一定要确认还有什么修改过的,或新建的文件还没有git add到暂存区,否则提交的时候不会记录这些还没暂存起来的变化。

所以,每次准备提交前,先用git status查看下,需要提交的文件是不是都已暂存起来了,然后再运行提交命令git commit -m '备注信息'

  • 可以用来查看当前代码有没有被放到仓储中去
  • 命令: git status

2.5 git中的忽略文件

  • .gitignore,在这个文件中可以设置要被忽略的文件或者目录。
  • 被忽略的文件不会被提交仓储里去.
  • 在.gitignore中可以书写要被忽略的文件的路径,以/开头,
    一行写一个路径,这些路径所对应的文件都会被忽略,
    不会被提交到仓储中
    • 写法
      • /.idea 会忽略.idea文件
      • /js 会忽略js目录里的所有文件
      • /js/*.js 会忽略js目录下所有js文件

2.6 查看提交的日志

  • git log 查看历史提交的日志
  • git log --oneline 可以看到简洁版的日志

2.7 回退到指定的版本

  • git reset --hard Head~0
    • 表示回退到上一次代码提交时的状态
  • git reset --hard Head~1

    • 表示回退到上上次代码提交时的状态
  • git reset --hard [版本号]

    • 可以通过版本号精确的回退到某一次提交时的状态
  • git reflog

    • 可以看到每一次切换版本的记录:可以看到所有提交的版本号

注意:通过版本号回退到例如第一版,在想退回到第五版时,需要提前记住版本号,这时在第一版打印git log历史记录提交日志,是看不见后面的版本记录的。但也不必过于担心,可以通过git reflog查看版本的切换记录从而得到版本号


2.8 Git分支

Git之所以能实现分布式版本控制,就是基于其分支管理策略。本地库所做的操作都是在某分支上进行的,不同分支之间可以合并。可以拉取远程分支到本地,也可以推送本地分支到远程。

  1. git branch <branchName> #创建新的分支
  2. git branch -d <branchName> #删除已有分支
  3. git checkout <branchName> #切换到其它分支上
  4. git checkout -b <branchName> #创建并切换分支
  5. git merge <branchName> #合并branchName分支到当前分支上
  6. git branch -r #查看远程分支
  7. git branch -a #查看远程及本地的所有分支,当前分支前加"*"号
  • 默认是有一个主分支master

创建分支

  • git branch dev
    • 创建了一个dev分支
    • 在刚创建时dev分支里的东西和master分支里的东西是一样的

切换分支

  • git checkout dev
    • 切换到指定的分支,这里的切换到名为dev的分支
      git branch 可以查看当前有哪些分支

注意:如果在当前分支未提交更新,切换到其他分支,会将修改后未提交的文件和状态一同带到切换的分支中

创建并切换分支

  • git checkout -b dev
    • 创建并切换到该分支中

合并分支

  • git merge dev
    • 合并分支内容,把当前分支与指定的分支(dev),进行合并
    • 当前分支指的是git branch命令输出的前面有*号的分支
  • 合并时如果有冲突,需要手动去处理,处理后还需要再提交一次.
  • 冲突:在两个分支都进行了修改,合并时代码无法判断以哪个为准,所以需要我们人为的修改文件内容。
  • 他是将两个文件都修改的内容通过区域划分合并在一起了,我们手动修改需要保存的文件内容即可。

三、工欲善其事必先利其器

工欲善其事必先利其器,工具的熟练掌握、合理利用,修改记录保存完整,后期检索跟踪问题,以及多项目软件切换合并才能简单易操作,才能保证代码的质量。

提交代码到远程仓库

你完全可以在一个“远程”仓库上工作,而实际上它在你本地的主机上。 词语“远程”未必表示仓库在网络或互联网上的其它位置,而只是表示它在别处。 在这样的远程仓库上工作,仍然需要和其它远程仓库上一样的标准推送、拉取和抓取操作。

远程仓库有很多,比较典型的有GithubCoddingGitee

Github账号申请

GitHub是一个代码托管平台,支持多人合作完成项目,在GitHub上你可以找到大量开源的代码,程序员们可以通过这个平台进行有效社交与合作。

打开网址:https://github.com

进入Git官网,点击右上角的sign up进入注册页

输入用户名“Username”、邮箱地址“Email address”、密码“Passport”,再点击下方的“Create account”提交

选择适合自己的免费或者收费的选项,默认是免费的选项,再点继续“Continue”

登录注册时填写用户名或邮箱,会收到GitHub发的验证邮件,点击“Verify email address”跳转到GitHub页面就大功告成了

登录后点击右上角’New repository’创建远程仓库

创建完成会跳转到仓库中,点击HTTP和SSH可以获取仓库地址

查看远程仓库

如果想查看你已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出你指定的每一个远程服务器的简写。 如果你已经克隆了自己的仓库,那么至少应该能看到 origin ——这是 Git 给你克隆的仓库服务器的默认名字:orgin

添加远程仓库

运行 git remote add <简称> <远程仓库地址> 添加一个新的远程 Git 仓库,同时指定一个方便使用的简写。下次执行拉取、克隆、提交等命令就可以通过简写名称省略远程仓库地址了。

本地仓库和远程仓库建立连接

  • git remote add origin <远程库的网址>

把当前分支的内容上传到远程的master分支上

  • git push [远程库的地址] master

    • 示例: git push https://github.com/Zevs6/blogimg5.git master
  • 简写:git push origin -u master当加上-u参数后面就可以直接写 git push 即可

  • 加上-u参数,git会把当前分支与远程的指定分支进行关联 git push origin master

pull命令拉取远程分支并与本地分支合并

  • git pull [远程地址] master

    • 示例: git pull https://github.com/Zevs6/blogimg4.git master

clone命令克隆远程库到本地

  • git clone <远程库的网址>
  • 示例: git clone https://github.com/Zevs6/blogimg5.git master

pull拉取和clone克隆的区别,pull拉取需要本地提前有一个初始化的仓库,而clone克隆无需本地初始化项目,他会直接将远程的仓库连同文件夹一同下载到本地中。

新建仓库并提交到远程

  1. echo "# my-study" >> README.md
  2. git init
  3. git add ./README.md
  4. git commit -m 'first commit'
  5. git remote add origin git@github.com:zevs6/my-study.git
  6. git push -u origin master
  7. // git push

ssh方式上传代码

  • 公钥id_rsa.pub 私钥id_rsa 两者之间关联绑定
  • 生成公钥和私钥 ssh-keygen -t rsa -C '2602138376@qq.com'

  • 默认存储在 C:\Users\Administrator\.ssh

  • 复制id_rsa.pub内容到github上settings=>SSH and GPG keys=>New SSH key保存即可

  • 这时候我们推送仓储就无需输入密码了,通过这种方式避免了密码泄露,只需要将推送者的电脑公钥绑定到github中


版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 博主信息
     一纸荒凉* Armani
    博文
    53
    粉丝
    2
    评论
    3
    访问量
    20986
    积分:0
    P豆:136