学习|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入门与实践
文章图片

??Git属于分散型版本管理系统(version control system,VCS),是为版本管理而设计的软件。这里需要解释一下什么是版本管理——管理更新的历史记录。它为我们软件开发过程中提供帮助,例如记录一款软件增加、删除或更改源代码的过程,回滚到特定阶段,恢复误删的文件等。
??上述提到的版本管理系统可分为集中型和分散型两种。集中型版本管理系统最具代表性的是Subversion(SVN)。
学习|Git入门与实践
文章图片

学习|Git入门与实践
文章图片

将仓库集中存放在服务器中,因此只存在一个仓库,所有的数据集中存放在一起,便于集中管理。但一旦开发者因为所处环境连接不上服务器,就无法获得最新的源代码,开发也就无法继续下去。服务器宕机也是同样的情况,如果服务器宕机导致数据丢失,开发者恐怕再也无法找到最新的代码了。
??分散型版本管理系统以Git为代表。学习|Git入门与实践
文章图片

学习|Git入门与实践
文章图片

Git将某个指定的仓库复制给开发者一份,复制到开发者的账户下。复制出来的仓库和原仓库是两个独立的仓库,因此开发者可以随意编辑复制而来的仓库。开发者本地就有仓库,因此不需要链接原仓库就可以进行开发。所有的仓库之间都可以pull或push操作,拉取资源和上传资源。但如果不加以制定开发方案,容易造成原仓库资源混乱,搞不清代码是否最新,容易让软件开发失去控制。
??两种版本管理的方式各有优缺点,但是Git还是用的比较多,只要实现规范开发,就可以提高开发效率,让大家一起完成一个大项目。
一、Git安装 macOS和Linux大都已经预装了Git,直接使用即可。
WIndows用户可以官网下载安装包:
Git for Windows:https://gitforwindows.org/
二、Github注册及界面使用 学习|Git入门与实践
文章图片

??GitHub是为开发者提供Git仓库的托管服务,这是一个让开发者与朋友、同事以及陌生人共享代码的场所。
Github注册及页面使用
三、Git、GitHub、GitLab、Gitee几者的区别 【学习|Git入门与实践】??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 仓库地址

项目已经下载下来
学习|Git入门与实践
文章图片

编辑完成后,
学习|Git入门与实践
文章图片

拉取更新:使用一下命令,更新一下项目,避免遗漏更新的源代码
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入门与实践
文章图片

复制仓库链接,填写完成后点击下面的Clone 拉取项目
学习|Git入门与实践
文章图片

可能需要 “信任”项目,点击Trust Project
学习|Git入门与实践
文章图片

等待项目克隆成功后就可以开发代码了…
学习|Git入门与实践
文章图片

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

Commit… 根据自己需要填写,重点就是写一下说明
学习|Git入门与实践
文章图片

学习|Git入门与实践
文章图片

Push… 弹窗显示了,一些commit的信息:某人在哪天什么时候,更改了那些文件,此版本号是多少,更改后做出了什么说明。 一切正常就可以点击 Push
学习|Git入门与实践
文章图片

Push成功
学习|Git入门与实践
文章图片

4.3.3 上传查看
当所有的项目上传完成后,你可以在GitHub或者GitLab的Web端查看项目的更新情况。比如:GitLab可以看到文件最后的更新时间:
学习|Git入门与实践
文章图片

也可以点击提交,分支等按钮查看详细信息
学习|Git入门与实践
文章图片

五、可能遇到问题 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 //可以省略

    推荐阅读