Git入门与实践

Git入门与实践

  • 前言
  • 一、Git安装
  • 二、Github注册及界面使用
  • 三、Git、GitHub、GitLab、Gitee几者的区别
  • 四、Git实践
    • 4.1 设置用户名和邮箱
    • 4.2 新建一个项目
    • 4.3 克隆一次项目,并且更新一次(GitLab为例)
      • 4.3.1命令行操作
      • 4.3.2 IntelliJ IDEA 的Git操作
      • 4.3.3 上传查看
  • 五、可能遇到问题
    • 5.1 git 执行 git reset HEAD 报 Unstaged changes after reset
    • 5.2 git 放弃本地修改,远程分支强制覆盖本地

前言

  从开始编程就听人说过git用于项目编程能提高项目开发效率,这里总结了一下,涉及到一些入门知识与实践。
Git入门与实践_第1张图片
  Git属于分散型版本管理系统(version control system,VCS),是为版本管理而设计的软件。这里需要解释一下什么是版本管理——管理更新的历史记录。它为我们软件开发过程中提供帮助,例如记录一款软件增加、删除或更改源代码的过程,回滚到特定阶段,恢复误删的文件等。
  上述提到的版本管理系统可分为集中型和分散型两种。集中型版本管理系统最具代表性的是Subversion(SVN)
Git入门与实践_第2张图片
Git入门与实践_第3张图片

将仓库集中存放在服务器中,因此只存在一个仓库,所有的数据集中存放在一起,便于集中管理。但一旦开发者因为所处环境连接不上服务器,就无法获得最新的源代码,开发也就无法继续下去。服务器宕机也是同样的情况,如果服务器宕机导致数据丢失,开发者恐怕再也无法找到最新的代码了。
  分散型版本管理系统以Git为代表。Git入门与实践_第4张图片
Git入门与实践_第5张图片
Git将某个指定的仓库复制给开发者一份,复制到开发者的账户下。复制出来的仓库和原仓库是两个独立的仓库,因此开发者可以随意编辑复制而来的仓库。开发者本地就有仓库,因此不需要链接原仓库就可以进行开发。所有的仓库之间都可以pull或push操作,拉取资源和上传资源。但如果不加以制定开发方案,容易造成原仓库资源混乱,搞不清代码是否最新,容易让软件开发失去控制。
  两种版本管理的方式各有优缺点,但是Git还是用的比较多,只要实现规范开发,就可以提高开发效率,让大家一起完成一个大项目。

一、Git安装

macOS和Linux大都已经预装了Git,直接使用即可。
WIndows用户可以官网下载安装包:
Git for Windows:https://gitforwindows.org/

二、Github注册及界面使用

Git入门与实践_第6张图片
  GitHub是为开发者提供Git仓库的托管服务,这是一个让开发者与朋友、同事以及陌生人共享代码的场所。

Github注册及页面使用

三、Git、GitHub、GitLab、Gitee几者的区别

  Git是一种版本控制系统,是一种cmd命令行工具。
  GitHub是一个基于git实现在线代码托管的仓库,向互联网开放,拥有超过 900 万的开发者用户,目前仍然是最火的开源项目托管平台,个人免费、企业版收费
  GitLab类似GitHub,一般用于在企业内搭建git私服要自己搭环境。GitLab-ce是社区版,GitLab-ee是收费企业版。
  Gitee即码云,是开源中国(OSChina)免费给企业用的,不用自己搭建环境,可以建立自己的私有仓库,可以理解为国内的GitHub。
  可以依据个人喜好,使用不同的平台

如何选择?
  GitHub和Gitee(码云)虽然是免费的,而且不用自己搭环境,个人使用还好但是企业中把项目放在别人的服务器上,始终没有安全感。因此,衍生出了gitlab,就是用于企业搭私服,而且还是在自己的服务器上。GitLab 让开发团队对他们的代码仓库拥有更多的控制,相比较 GitHub和Gitee , 它有不少特色:
(1) 允许免费设置仓库权限;
(2) 允许用户选择分享一个 project 的部分代码;
(3) 允许用户设置 project 的获取权限,进一步提升安全性;
(4) 可以设置获取到团队整体的改进进度;
(5) 通过 innersourcing 让不在权限范围内的人访问不到该资源

四、Git实践

你可以通过以下命令查看所有的配置以及它们所在的文件:

git config --list --show-origin

4.1 设置用户名和邮箱

  安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,提交中,每一次提交都会显示一次用户名和邮箱,因此需要注意隐私。

git config --global user.name "xxxxxx"
git config --global user.email [email protected]

注意: git config --global 参数,有了这个参数表示你这台机器上所有的git仓库都会使用这个配置,当然你也可以对某个仓库指定不同的用户名和邮箱

4.2 新建一个项目

  初始化成功后,git init的命令目录下就会生成.git目录,这里用来存储着管理当前目录内容所需的仓库数据。

mkdir test #新建一个文件夹(仓库),test为仓库名
cd test    #进入文件夹
git init   #初始化

添加文件

#添加一个Markdown语言写的README.md文件,用来对仓库进行说明。因此每次创建新项目的时候,都默认创建README.md文件。当然你可以创建其他的文件...
git add README.md 
# 写一个仓库的历史记录,也可以理解为做个说明
git commit -m "first commit"
#添加远程仓库 http链接写的是你远程仓库的url
git remote add origin https://......
#提交,这里会要你输入用户名和密码。密码是不可见的,当你输入对了后,就会自动提交。
git push -u orgin master
#显示某个远程仓库的信息:
git remote show https://...
#显示所有远程仓库:
git remote -v
#其他相关命令:
git remote rm name  # 删除远程仓库
git remote rename old_name new_name  # 修改仓库名

4.3 克隆一次项目,并且更新一次(GitLab为例)

4.3.1命令行操作

复制所需要项目的链接,当然你可以点击下载按钮直接下载文件再解压缩。
Git入门与实践_第7张图片
输入命令行代码:仓库地址就是链接

git clone 仓库地址

项目已经下载下来
ddd
编辑完成后,
请添加图片描述
拉取更新:使用一下命令,更新一下项目,避免遗漏更新的源代码

git pull

附加所有的项目,准备push

git add .

撰写每一次上传的项目说明,保存每一次上传的历史记录

git commit -m "要说明的话"

上传到仓库

git push

查看状态

git status

4.3.2 IntelliJ IDEA 的Git操作

打开IDEA,点击Get from VCS (版本管理系统 version control system,VCS)
Git入门与实践_第8张图片
复制仓库链接,填写完成后点击下面的Clone 拉取项目
Git入门与实践_第9张图片
可能需要 “信任”项目,点击Trust Project
Git入门与实践_第10张图片
等待项目克隆成功后就可以开发代码了…
Git入门与实践_第11张图片
Git控件三个按钮,从左到右依次是,Update Project… Commit… Push…

更新项目,如果项目是多人开发的,就需要不定时Update Project… 让源代码保持最新的版本,点击按钮后会弹窗,第一个选项是:将改变合并到当前分支中。用来将开发的部分保存为一个节点,团队中的不同开发者将自己的开发部分保存为一个节点,最后统一合并成一个整体。第二个选项是将此时的开发统一合并成未来分支的基础。以后的开发版本都是从现在这个版本再进行分支。总的来说,新手用merge,老手用rebase。
Git入门与实践_第12张图片

Commit… 根据自己需要填写,重点就是写一下说明
Git入门与实践_第13张图片
Git入门与实践_第14张图片
Push… 弹窗显示了,一些commit的信息:某人在哪天什么时候,更改了那些文件,此版本号是多少,更改后做出了什么说明。 一切正常就可以点击 Push
Git入门与实践_第15张图片
Push成功
Git入门与实践_第16张图片

4.3.3 上传查看

当所有的项目上传完成后,你可以在GitHub或者GitLab的Web端查看项目的更新情况。比如:GitLab可以看到文件最后的更新时间:
Git入门与实践_第17张图片
也可以点击提交,分支等按钮查看详细信息
请添加图片描述

五、可能遇到问题

5.1 git 执行 git reset HEAD 报 Unstaged changes after reset

# 解决的办法如下2种办法:
# 第一种
git add .
git reset --hard
#第二种
git stash
git stash drop

5.2 git 放弃本地修改,远程分支强制覆盖本地

git fetch --all    //只是下载代码到本地,不进行合并操作

git reset --hard origin/分支名如master    //把HEAD指向最新下载的版本

git pull //可以省略

你可能感兴趣的:(学习,git,github)