Git入门与实践

前言

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

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

一、Git安装

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

二、Github注册及界面使用

github
  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 xxxxxx@xx.com

注意: 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
输入命令行代码:仓库地址就是链接

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)
IDEA
复制仓库链接,填写完成后点击下面的Clone 拉取项目
idea
可能需要 “信任”项目,点击Trust Project
idea
等待项目克隆成功后就可以开发代码了…
idea
Git控件三个按钮,从左到右依次是,Update Project… Commit… Push…

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

Commit… 根据自己需要填写,重点就是写一下说明
idea
请添加图片描述
Push… 弹窗显示了,一些commit的信息:某人在哪天什么时候,更改了那些文件,此版本号是多少,更改后做出了什么说明。 一切正常就可以点击 Push
idea
Push成功
idea

4.3.3 上传查看

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

五、可能遇到问题

5.1 error: Your local changes to the following files would be overwritten by merge:

error
解决的办法

# 方法一、stash
git stash
git commit
git stash pop
#补充
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
# 方法二、放弃本地修改,直接覆盖
git reset --hard
git pull

使用方法二
error
Git回滚代码到某个commit

# 回退命令:
git reset --hard HEAD^ 回退到上个版本
git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard commit_id 退到/进到,指定commit的哈希码(这次提交之前或之后的提交都会回滚)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值