使用Git与GitHub协同开发并搭建私有GitLab代码托管

Linus在1991年创建了开源的Linux,从此全世界的工程师参与了Linux的开发,期初Linus是通过手动diff的方式进行代码审核和合并的,后来BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!如果当时BitMover公司专门为Linux发布一个社区版,也许这家公司也就名垂青史了,可是当时这家公司思想境界没那么高而且Linus也那么牛!

Ubuntu安装Git niko@niko-notebook:~$ sudo apt install git -y Windows安装Git

基本就是一路Next最后Finsh。

同一团队协作开发

假定存在用户A和用户B,用户A创建了一个远程仓库,然后远程仓库clone到本地,进行开发完成以后push到远程仓库。同时用户B也在开发这个项目,首先用户B将远程仓库clone到本地进行开发,完成后push到远程仓库,同时用户A再pull远程仓库代码同步项目。

使用Git与GitHub协同开发并搭建私有GitLab代码托管服务器

跨团队协作开发

假定存在两个开发团队A和B,开发团队A的每个成员都拥有一个本地版本库,但是需要开发团队B协助开发,那么开发团队会先fork一个远程仓库,接着开发团队B的成员分别clone副本远程仓库到本地进行开发,然后push到副本远程仓库。完成后,开发团队B向开发团队A发出一个pull request请求,项目通过审核之后开发团队A再merge副本库到原始远程库,完成功能合并。

使用Git与GitHub协同开发并搭建私有GitLab代码托管服务器

使用Git命令行

使用git init命令初始化一个新的项目

niko@niko-notebook:~$ git init StudyGit
Initialized empty Git repository in /home/niko/StudyGit/.git/

使用git init命令开始管理一个现有的项目

niko@niko-notebook:~$ mkdir StydyGit
niko@niko-notebook:~$ cd StydyGit/
niko@niko-notebook:~/StydyGit$ git init
Initialized empty Git repository in /home/niko/StydyGit/.git/

使用Git管理一个项目的时候会创建一下文件和目录

niko@niko-notebook:~$ tree StudyGit -a
StudyGit
└── .git
  ├── HEAD
  ├── branches
  ├── config
  ├── description
  ├── hooks
  │  ├── applypatch-msg.sample
  │  ├── commit-msg.sample
  │  ├── fsmonitor-watchman.sample
  │  ├── post-update.sample
  │  ├── pre-applypatch.sample
  │  ├── pre-commit.sample
  │  ├── pre-push.sample
  │  ├── pre-rebase.sample
  │  ├── pre-receive.sample
  │  ├── prepare-commit-msg.sample
  │  └── update.sample
  ├── info
  │  └── exclude
  ├── objects
  │  ├── info
  │  └── pack
  └── refs
      ├── heads
      └── tags

10 directories, 15 files

在Git中有4个区,分别是工作区、暂存区、本地库、远程库。我们项目开发就是在工作区工作,然后使用git add命令将工作区的代码提交到暂存区,使用git commit命令将暂存区的文件提交到本地库。Git的有一个代码托管中心是GitHub,同样国内还有Google Code,码云等。

设置Git签名

项目级别(本地)

niko@niko-notebook:~/StydyGit$ git config user.name niko
niko@niko-notebook:~/StydyGit$ git config user.email niko@163.com

系统级别(全局)

niko@niko-notebook:~/StydyGit$ git config --global user.name xvge
niko@niko-notebook:~/StydyGit$ git config --global user.email xvge@163.com

签名优先级

就近原则:项目优先级高于系统优先级

项目级别的配置信息存放到项目目录的.git/config文件中:

niko@niko-notebook:~/StydyGit$ cat .git/config[core]
      repositoryformatversion = 0
      filemode = true
      bare = false
      logallrefupdates = true
[user]
      name = niko
      email = niko@163.com

项目级别的配置信息存放到系统用户目录的.gitconfig文件中:

niko@niko-notebook:~/StydyGit$ cat ~/.gitconfig[user]
      name = xvge
      email = xvge@163.com

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/31b852f376394eb7f474e4381529dd22.html