Git工作流程和操作

Git、GitHub和GitLab的区别

Git

Git 是一个分布式的版本控制系统。

  • 版本控制系统是一种用于记录一个或多个文件内容变化,方便查阅特定版本修订情况的系统。
    没有使用版本控制系统之前,如果需要记录同一份文件不同版本的修改,可能会以“file_v1”、“file_v2”、“file_v3”等命名方式来保存不同时刻对文件的新增、修改,删除等操作。

  • 分布式系统可以把代码仓库完整地镜像下来,相当于每个人的电脑都是一个完整的版本库。

  • 集中式版本控制系统:版本库是集中存放在中央服务器的,工作的时候,用的是自己的电脑,所以,我们首先需要从中央服务器上拉取最新的版本,然后开始工作,等工作完了,再把自己的工作提交到中央服务器。(借用廖雪峰老师的一个比喻,中央服务器好比是一个图书馆,如果要改其中的一本书,必须先要从图书馆里把书借出来,然后更改,改完之后,再放回图书馆。)

  • 分布式版本控制系统:没有中央服务器的概念,本地提取的不只是最新的文件,而是把代码仓库完整地镜像下来,相当于每个人的电脑都是一个完整的版本库。这样的话,任何一处协同工作的服务器出现故障,都可以用任何一个镜像出来的本地仓库恢复。即便在网络环境比较差的情况下也不用担心,因为版本库就在本地电脑上。

集中式和分布式版本控制系统的区别

  • 集中式版本控制系统的历史仓库是存在于中央仓库,每次对比与提交代码都必须连接到中央仓库;
  • 分布式版本控制系统的本地仓库包含代码库和历史库,即本地就可以查看版本历史。

GitHub

GitHub是一个面向开源及私有软件项目的托管平台,只支持git作为唯一的版本库格式进行托管。

GitLab

GitLab 是一个用于仓库管理系统的开源项目,其使用MIT许可证且具有wiki和issue跟踪功能,使用Git作为代码管理工具,并在此基础上搭建起来的web服务

GitLab有完善的管理界面和权限控制,一般用于在企业、学校等内部网络搭建Git私服。

GitHub和GitLab的共同点

  • GitHub和GitLlab两个都是基于Web的Git远程仓库,都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。

GitHub和GitLab的不同点

  • GitHub同时提供公共仓库和私有仓库,但如果使用私有仓库,是需要付费的;GitLab可以创建私人的免费仓库。从代码的私有性上来看,GitLab 是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。

一般工作流程如下:

安装后,在任意文件夹右键可以打开git bash的终端,支持常用Linux命令。

  • 从远程仓库中克隆 Git 资源作为本地仓库;
  • 从本地仓库中checkout代码然后进行代码修改;
  • 在提交本地仓库前先将代码提交到暂存区;
  • 提交修改,提交到本地仓库;本地仓库中保存修改的各个历史版本;
  • 在需要和团队成员共享代码时,可以将修改代码push到远程仓库。

Git 的工作流程图如下:

下载安装

用户信息配置

使用前,先进行本地用户配置。

  • 配置本地用户信息:

    git config --global user.name "John Doe"
    git config --global user.email johndoe@eg.com
  • 查看本地用户信息

    git config user.name
    git config user.email
  • 保存用户名密码,不用每次都输入

    git config --global credential.helper store

  • 清除本地用户密码

    git credential-manager uninstall

  • 用户信息只是配置的时候用来标记的,并不是远端的认证信息

将本机注册到远程仓库

为什么这么做

生成一对公私钥,私钥留在本地,公钥发送给远程仓库的管理者,后者把此公钥添加到认可的公钥列表中,远程就认可了该设备。

从远程服务拉取更新时,远程服务器可以用你的公钥对数据加密,然后本地接收到后用本地的私钥解密。因为私钥只有你自己有,所以只有你可以解,这样就保护了仓库的权限。

从本地向远程仓库推送更新时,使用私钥加密数据,远程仓库用你开始提交的公钥解密数据。

操作流程

生成本地公钥

linux终端(或者windows的gitbash)执行ssh-keygen,会生成一对公私钥id_dsaid_dsa.pub。linux下在~/.ssh目录,windows在users/username/.ssh下。

id_dsa.pub文件内容就是公钥,里面的内容是经过base64转码的。

注册公钥到远程仓库,以gitlab为例

常用git命令

  • 创建仓库

    git init

  • 克隆仓库

    git clone https://xxx/mypro.git

  • 查看远端

    git remote

  • 查看当前暂存状态

    git status

    只有处于暂存状态的文件才会被提交。

  • 添加文件到被跟踪(track)

    git add filename

  • 删除文件

    git rm somefile

  • 撤销文件的跟踪

    git reset somefile

  • 撤销文件的改动

    git checkout somefile

  • 提交(暂存状态)

    git commit -m "first commit"

  • 获取远端更新

    git fetch remote_rep_name

  • 拉取到本地

    git pull

  • 推送到远程仓库

    git push

  • 查看提交的改动

    git show commitid filename

  • 恢复到指定的版本

    git rebase -i commitid

  • 撤销N个提交

    git reset --hard HEAD~N

  • 清除提交,恢复版本

    git fetch origin branchname

    git reset --hard origin/branchname

  • 查看本地分支列表

    git branch -a

  • 查看远程分支列表

    git branch -r

  • 新建分支

    git branch branchname

  • 切换分支

    git checkout branchname

  • 删除分支

    git branch -d <branch_name>

  • 提交分支到远程

    git push origin local_branch_name:remote_branch_name

  • 重新拉取当前目录

    先删除目录里的东西,然后git checkout .

  • 清除更新

    git checkout . && git clean -xdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值