标签 Git 下的文章

欢迎阅读本系列关于如何使用 Git 版本控制系统的教程!通过本文的介绍,你将会了解到 Git 的用途及谁该使用 Git。

如果你刚步入开源的世界,你很有可能会遇到一些在 Git 上托管代码或者发布使用版本的开源软件。事实上,不管你知道与否,你都在使用基于 Git 进行版本管理的软件:Linux 内核(就算你没有在手机或者电脑上使用 Linux,你正在访问的网站也是运行在 Linux 系统上的),Firefox、Chrome 等其他很多项目都通过 Git 代码库和世界各地开发者共享他们的代码。

换个角度来说,你是否仅仅通过 Git 就可以和其他人共享你的代码?你是否可以在家里或者企业里私有化的使用 Git?你必须要通过一个 GitHub 账号来使用 Git 吗?为什么要使用 Git 呢?Git 的优势又是什么?Git 是我唯一的选择吗?这对 Git 所有的疑问都会把我们搞的一脑浆糊。

因此,忘记你以前所知的 Git,让我们重新走进 Git 世界的大门。

什么是版本控制系统?

Git 首先是一个版本控制系统。现在市面上有很多不同的版本控制系统:CVS、SVN、Mercurial、Fossil 当然还有 Git。

很多像 GitHub 和 GitLab 这样的服务是以 Git 为基础的,但是你也可以只使用 Git 而无需使用其他额外的服务。这意味着你可以以私有或者公有的方式来使用 Git。

如果你曾经和其他人有过任何电子文件方面的合作,你就会知道传统版本管理的工作流程。开始是很简单的:你有一个原始的版本,你把这个版本发送给你的同事,他们在接收到的版本上做了些修改,现在你们有两个版本了,然后他们把他们手上修改过的版本发回来给你。你把他们的修改合并到你手上的版本中,现在两个版本又合并成一个最新的版本了。

然后,你修改了你手上最新的版本,同时,你的同事也修改了他们手上合并前的版本。现在你们有 3 个不同的版本了,分别是合并后最新的版本,你修改后的版本,你同事手上继续修改过的版本。至此,你们的版本管理工作开始变得越来越混乱了。

正如 Jason van Gumster 在他的文章中指出 即使是艺术家也需要版本控制,而且已经在个别人那里发现了这种趋势变化。无论是艺术家还是科学家,开发一个某种实验版本是并不鲜见的;在你的项目中,可能有某个版本大获成功,把项目推向一个新的高度,也可能有某个版本惨遭失败。因此,最终你不可避免的会创建出一堆名为project\_justTesting.kdenlive、project\_betterVersion.kdenlive、project\_best\_FINAL.kdenlive、project\_FINAL-alternateVersion.kdenlive 等类似名称的文件。

不管你是修改一个 for 循环,还是一些简单的文本编辑,一个好的版本控制系统都会让我们的生活更加的轻松。

Git 快照

Git 可以为项目创建快照,并且存储这些快照为唯一的版本。

如果你将项目带领到了一个错误的方向上,你可以回退到上一个正确的版本,并且开始尝试另一个可行的方向。

如果你是和别人合作开发,当有人向你发送他们的修改时,你可以将这些修改合并到你的工作分支中,然后你的同事就可以获取到合并后的最新版本,并在此基础上继续工作。

Git 并不是魔法,因此冲突还是会发生的(“你修改了某文件的最后一行,但是我把这行整行都删除了;我们怎样处理这些冲突呢?”),但是总体而言,Git 会为你保留了所有更改的历史版本,甚至允许并行版本。这为你保留了以任何方式处理冲突的能力。

分布式 Git

在不同的机器上为同一个项目工作是一件复杂的事情。因为在你开始工作时,你想要获得项目的最新版本,然后此基础上进行修改,最后向你的同事共享这些改动。传统的方法是通过笨重的在线文件共享服务或者老旧的电邮附件,但是这两种方式都是效率低下且容易出错。

Git 天生是为分布式工作设计的。如果你要参与到某个项目中,你可以 克隆 clone 该项目的 Git 仓库,然后就像这个项目只有你本地一个版本一样对项目进行修改。最后使用一些简单的命令你就可以 拉取 pull 其他开发者的修改,或者你可以把你的修改 推送 push 给别人。现在不用担心谁手上的是最新的版本,或者谁的版本又存放在哪里等这些问题了。全部人都是在本地进行开发,然后向共同的目标推送或者拉取更新。(或者不是共同的目标,这取决于项目的开发方式)。

Git 界面

最原始的 Git 是运行在 Linux 终端上的应用软件。然而,得益于 Git 是开源的,并且拥有良好的设计,世界各地的开发者都可以为 Git 设计不同的访问界面。

Git 完全是免费的,并且已经打包在 Linux,BSD,Illumos 和其他类 Unix 系统中,Git 命令看起来像这样:

$ git --version
git version 2.5.3

可能最著名的 Git 访问界面是基于网页的,像 GitHub、开源的 GitLab、Savannah、BitBucket 和 SourceForge 这些网站都是基于网页端的 Git 界面。这些站点为面向公众和面向社会的开源软件提供了最大限度的代码托管服务。在一定程度上,基于浏览器的图形界面(GUI)可以尽量的减缓 Git 的学习曲线。下面的 GitLab 界面的截图:

再者,第三方 Git 服务提供商或者独立开发者甚至可以在 Git 的基础上开发出不是基于 HTML 的定制化前端界面。此类界面让你可以不用打开浏览器就可以方便的使用 Git 进行版本管理。其中对用户最透明的方式是直接集成到文件管理器中。KDE 文件管理器 Dolphin 可以直接在目录中显示 Git 状态,甚至支持提交,推送和拉取更新操作。

Sparkleshare 使用 Git 作为其 Dropbox 式的文件共享界面的基础。

想了解更多的内容,可以查看 Git wiki,这个(长长的)页面中展示了很多 Git 的图形界面项目。

谁应该使用 Git?

就是你!我们更应该关心的问题是什么时候使用 Git?和用 Git 来干嘛?

我应该在什么时候使用 Git 呢?我要用 Git 来干嘛呢?

想更深入的学习 Git,我们必须比平常考虑更多关于文件格式的问题。

Git 是为了管理源代码而设计的,在大多数编程语言中,源代码就意味者一行行的文本。当然,Git 并不知道你把这些文本当成是源代码还是下一部伟大的美式小说。因此,只要文件内容是以文本构成的,使用 Git 来跟踪和管理其版本就是一个很好的选择了。

但是什么是文本呢?如果你在像 Libre Office 这类办公软件中编辑一些内容,通常并不会产生纯文本内容。因为通常复杂的应用软件都会对原始的文本内容进行一层封装,就如把原始文本内容用 XML 标记语言包装起来,然后封装在 Zip 包中。这种对原始文本内容进行一层封装的做法可以保证当你把文件发送给其他人时,他们可以看到你在办公软件中编辑的内容及特定的文本效果。奇怪的是,虽然,通常你的需求可能会很复杂,就像保存 Kdenlive 项目文件,或者保存从 Inkscape 导出的SVG文件,但是,事实上使用 Git 管理像 XML 文本这样的纯文本类容是最简单的。

如果你在使用 Unix 系统,你可以使用 file 命令来查看文件内容构成:

$ file ~/path/to/my-file.blah
my-file.blah: ASCII text
$ file ~/path/to/different-file.kra: Zip data (MIME type "application/x-krita")

如果还是不确定,你可以使用 head 命令来查看文件内容:

$ head ~/path/to/my-file.blah

如果输出的文本你基本能看懂,这个文件就很有可能是文本文件。如果你仅仅在一堆乱码中偶尔看到几个熟悉的字符,那么这个文件就可能不是文本文件了。

准确的说:Git 可以管理其他格式的文件,但是它会把这些文件当成二进制大对象(blob)。两者的区别是,在文本文件中,Git 可以明确的告诉你在这两个快照(或者说提交)间有 3 行是修改过的。但是如果你在两个 提交 commit 之间对一张图片进行的编辑操作,Git 会怎么指出这种修改呢?实际上,因为图片并不是以某种可以增加或删除的有意义的文本构成,因此 Git 并不能明确的描述这种变化。当然我个人是非常希望图片的编辑可以像把文本“丑陋的蓝绿色”修改成“漂浮着蓬松白云的天蓝色”一样的简单,但是事实上图片的编辑并没有这么简单。

经常有人在 Git 上放入 png 图标、电子表格或者流程图这类二进制大型对象(blob)。尽管,我们知道在 Git 上管理此类大型文件并不直观,但是,如果你需要使用 Git 来管理此类文件,你也并不需要过多的担心。如果你参与的项目同时生成文本文件和二进制大文件对象(如视频游戏中常见的场景,这些和源代码同样重要的图像和音频材料),那么你有两条路可以走:要么开发出你自己的解决方案,就如使用指向共享网络驱动器的引用;要么使用 Git 插件,如 Joey Hess 开发的 git annex,以及 Git-Media 项目。

你看,Git 真的是一个任何人都可以使用的工具。它是你进行文件版本管理的一个强大而且好用工具,同时它并没有你开始认为的那么可怕。


via: https://opensource.com/resources/what-is-git

作者:Seth Kenlon 译者:cvsher 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Git 和 Github 在 Linux 开发者中有很高的知名度。但是开发者如何看待它们呢?另外,Github 是不是真的和 Git 是一个意思?一个 Linux reddit 用户最近问到了这个问题,并且得到了很有意思的答案。

Dontwakemeup46 提问:

我正在学习 Git 和 Github。我感兴趣社区如何看待两者?据我所知,Git 和 Github 应用十分广泛。但是 Git 或 Github 有没有严重的不足?社区喜欢去改变些什么呢?更多见 Reddit

与他志同道合的 Linux reddit 用户回答了他们对于 Git 和 Github的观点:

Derenir:

“Github 并不附属于 Git。

Git 是由 Linus Torvalds 开发的。

Github 几乎不支持 Linux。

Github 是一家企图借助 Git 赚钱的公司。

https://desktop.github.com/ 并没有支持 Linux。”

Bilog78:

“一个小的补充: Linus Torvalds 已经不再维护 Git了。维护者是 Junio C Hamano,以及 在他之后的主要贡献者是 Jeff King 和 Shawn O. Pearce。”

Fearthefuture:

“我喜欢 Git,但是不明白人们为什么还要使用 Github。从我的角度,Github 比 Bitbucket 好的一点是用户统计和更大的用户基础。Bitbucket 有无限的免费私有库,更好的 UI,以及更好地集成了其他服务,比如说 Jenkins。”

Thunger:

“Gitlab.com 也很不错,特别是你可以在自己的服务器上架设自己的实例。”

Takluyver:

“很多人熟悉 Github 的 UI 以及相关联的服务,比如说 Travis 。并且很多人都有 Github 账号,所以它是存储项目的一个很好的地方。人们也使用他们的 Github 个人信息页作为一种求职用的作品选辑,所以他们很积极地将更多的项目放在这里。Github 是一个存放开源项目的事实标准。”

Tdammers:

“Git 严重问题在于 UI,它有些违反直觉,以至于很多用户只能达到使用一些容易记住的咒语的程度。

Github:最严重的问题在于它是商业托管的解决方案;你买了方便,但是代价是你的代码在别人的服务器上面,已经不在你的掌控范围之内了。另一个对于 Github 的普遍批判是它的工作流和 Git 本身的精神不符,特别是 pull requests 工作的方式。最后, Github 垄断了代码的托管环境,同时对于多样性是很不好的,这反过来对于旺盛的免费软件社区很重要。”

Dies:

“更重要的是,如果一旦是这样,按照现状来说,我猜我们会被 Github 所困,因为它们控制如此多的项目。”

Tdammers:

“代码托管在别人的服务器上,这里"别人"指的是 Github。这对于开源项目来说,并不是什么太大的问题,但是尽管如此,你无法控制它。如果你在 Github 上有私有项目,“它将保持私有”的唯一的保险只是 Github 的承诺而已。如果你决定删除东西,你不能确定东西是否被删除了,或者只是隐藏了。

Github 并不自己控制这些项目(你总是可以拿走你的代码,然后托管到别的地方,声明新位置是“官方”的),它只是有比开发者本身有更深的使用权。”

Drelos:

“我已经读了大量的关于 Github 的赞美与批评。(这里有一个例子),但是我的幼稚问题是为什么不向一个免费开源的版本努力呢?”

Twizmwazin:

“Gitlab 的源码就存在这里。”

更多见 Reddit

简介:这个快速指南将向你展示所有的基础 Git 命令以及用法。你可以下载这些命令作为快速参考。

我们在早先一篇文章中已经快速介绍过 Vi 速查表了。在这篇文章里,我们将会介绍开始使用 Git 时所需要的基础命令。

Git

Git 是一个分布式版本控制系统,它被用在大量开源项目中。它是在 2005 年由 Linux 创始人 Linus Torvalds 写就的。这个程序允许非线性的项目开发,并且能够通过存储在本地服务器高效处理大量数据。在这个教程里,我们将要和 Git 愉快玩耍并学习如何开始使用它。

我在这个教程里使用 Ubuntu,但你可以使用你选择的任何发行版。除了安装以外,剩下的所有命令在任何 Linux 发行版上都是一样的。

安装 Git

要安装 git 执行以下命令:

sudo apt-get install git-core

在它完成下载之后,你就安装好了 Git 并且可以使用了。

设置 Git

在 Git 安装之后,不论是从 apt-get 还是从源码安装,你需要将你的用户名和邮箱地址复制到 gitconfig 文件。你可以访问 ~/.gitconfig 这个文件。

全新安装 Git 之后打开它会是完全空白的:

sudo vim ~/.gitconfig

你也可以使用以下命令添加所需的信息。将‘user’替换成你的用户名,‘[email protected]’替换成你的邮箱。

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

然后你就完成设置了。现在让我们开始 Git。

仓库

创建一个新目录,打开它并运行以下命令:

git init

这个命令会创建一个新的 Git 仓库 repository 。你的本地仓库由三个 Git 维护的“树”组成。

第一个是你的 工作目录 Working Directory ,保存实际的文件。第二个是索引,实际上扮演的是 暂存区 staging area ,最后一个是 HEAD,它指向你最后一个 commit 提交。使用 git clone /path/to/repository 签出你的仓库(从你刚创建的仓库或服务器上已存在的仓库)。

添加文件并提交

你可以用以下命令添加改动:

git add <filename>

这会添加一个新文件到暂存区以提交。如果你想添加每个新文件,输入:

git add --all

添加文件之后可以使用以下命令检查状态:

git status

正如你看到的,那里已经有一些变化但还没有提交。现在你需要提交这些变化,使用:

git commit -m "提交信息"

你也可以这么做(首选):

git commit -a

然后写下你的提交信息。现在你的文件提交到了 HEAD,但还不在你的远程仓库中。

推送你的改动

你的改动在你本地工作副本的 HEAD 中。如果你还没有从一个已存在的仓库克隆,或想将你的仓库连接到远程服务器,你需要先添加它:

git remote add origin <服务器地址>

现在你可以将改动推送到指定的远程服务器。要将改动发送到远程服务器,运行:

git push -u origin master

分支

分支用于开发特性,分支之间是互相独立的。主分支 master 是你创建一个仓库时的“默认”分支。使用其它分支用于开发,在完成时将它合并回主分支。

创建一个名为“mybranch”的分支并切换到它之上:

git checkout -b mybranch

你可以使用这个命令切换回主分支:

git checkout master

如果你想删除这个分支,执行:

git branch -d mybranch

除非你将分支推送到远程服务器上,否则该分支对其他人是不可用的,所以只需把它推送上去:

git push origin <分支名>

更新和合并

要将你本地仓库更新到最新的提交上,运行:

git pull

在你的工作目录获取并合并远程变动。要合并其它分支到你的活动分支(如 master),使用:

git merge <分支>

在这两种情况下,git 会尝试 自动合并 auto-merge 改动。不幸的是,这不总是可能的,可能会导致冲突。你需要通过编辑 git 所显示的文件,手动合并那些冲突。改动之后,你需要用以下命令将它们标记为已合并:

git add <文件名>

在合并改动之前,你也可以使用以下命令预览:

git diff <源分支> <目标分支>

Git 日志

你可以这么查看仓库历史:

git log

要以每个提交一行的样式查看日志,你可以用:

git log --pretty=oneline

或者也许你想要看一个所有分支的 ASCII 艺术树,带有标签和分支名:

git log --graph --oneline --decorate --all

如果你只想看哪些文件改动过:

git log --name-status

在这整个过程中如果你需要任何帮助,你可以用 git --help。

Git 棒不棒?!祝贺你你已经会 Git 基础了。如果你愿意的话,你可以从下面这个链接下载这些基础 Git 命令作为快速参考:


via: http://itsfoss.com/basic-git-commands-cheat-sheet/

作者:Rakhi Sharma 译者:alim0x 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

今日关注

在 Git 2.8.4 刚刚发布一周之后,Git 2.9 发布了。Git 2.9 对许多核心命令进行了改进、以及性能提升和更好的开发支持。此外,还增加了一项实验性的功能: 多工作树 multiple worktree ,通过阻止在一个 Git 分支上从不同的地方进行访问或者检出的各种操作来保证安全性,并在检测到分支变动之后会通知用户。

新闻摘要

  • SMPlayer 16.6 发布。这一发行版采用了最新的 Qt5 技术,提供了对高分辨率 (HiDPI) 显示的支持。SMPlayer 16.6.0 还提供了对带触摸屏的二位一体机的支持,以及对外接显示设备的支持。目前已经可以下载使用了。
  • KDE Frameworks 5.23.0 发布,修复了若干 bug,对一些功能进行了完善。
  • BaruwaOS 6.8 发布。该系统基于 Red Hat 企业版 Linux 6.8 。这一版本提供了对重要的反垃圾邮件功能 DMARC (Domain Message Authentication Reporting & Conformance) 报告的支持,对传输服务设置的支持,以及对回退和传输服务的 IP 地址进行配置的支持。此外还支持 Let's Encrypt 的 SSL 证书服务。
  • elementary OS 0.4 “Loki” 的第一个 Beta 版本发布。该版本基于 Canonical 的 Ubuntu 16.04 LTS (Xenial Xerus) 操作系统,搭载 Linux 4.4 LTS 内核, 以及 GTK+ 3.18, 和 Vala 0.32。目前已经可以进行下载体验了。
  • Linux 内核 3.10.102 LTS 发布。Linux 3.10 LTS 系列的用户需要进行下载更新了。

在 Git 问世之前,分布式版本控制从来都不是一件简单的事。Git 是一个自由开源的软件,旨在轻松且快速地对从小规模到非常巨大的项目进行管理。Git 最开始由 Linus Torvalds 开发,他同时也是著名的 Linux 内核的创建者。在 git 和分布式版本控制系统领域中,GitLab 是一个极棒的新产品。它是一个基于 web 的 Git 仓库管理应用,包含代码审查、wiki、问题跟踪等诸多功能。使用 GitLab 可以很方便、快速地创建、审查、部署及托管代码。尽管它在其官方的服务器提供了与 Github 类似的免费托管的代码仓库,但它也可以运行在我们自己的服务器上。GitLab 有两个不同的版本: 社区版 Community Edition 企业版 Enterprise Edition 。社区版本完全免费且开源,遵循 MIT 协议;而企业版则遵循一个专有的协议,包含一些社区版中没有的功能。下面介绍的是有关如何在我们自己的运行着 Ubuntu、Fedora 或 Debian 操作系统的机器上安装 GitLab 社区版的简单步骤。

1. 安装先决条件

首先,我们需要安装 GitLab 所依赖的软件包。我们将安装 curl,用以下载我们所需的文件;安装openssh-server ,以此来通过 ssh 协议登录到我们的机器上;安装ca-certificates,用它来添加 CA 认证;以及 postfix,把它作为一个 MTA(Mail Transfer Agent,邮件传输代理)。

注: 若要安装 GitLab 社区版,我们需要一个至少包含 2 GB 内存和 2 核 CPU 的 linux 机器。

在 Ubuntu 14 .04/Debian 8.x 中

鉴于这些依赖包都可以在 Ubuntu 14.04 和 Debian 8.x 的官方软件仓库中获取到,我们只需通过使用 apt-get 包管理器来安装它们。为此,我们需要在一个终端或控制台中执行下面的命令:

# apt-get install curl openssh-server ca-certificates postfix

install dependencies gitlab ubuntu debian

在 Fedora 22 中

在 Fedora 22 中,由于 yum 已经被弃用了,默认的包管理器是 dnf。为了安装上面那些需要的软件包,我们只需运行下面的 dnf 命令:

# dnf install curl openssh-server postfix

install dependencies gitlab fedora

2. 打开并开启服务

现在,我们将使用我们默认的初始化系统来打开 sshd 和 postfix 服务。并且我们将使得它们在每次系统启动时被自动开启。

在 Ubuntu 14.04 中

由于在 Ubuntu 14.04 中安装的是 SysVinit 初始化系统,我们将使用 service 命令来开启 sshd 和 postfix 守护进程:

# service sshd start
# service postfix start

现在,为了使得它们在每次开机启动时被自动开启,我们需要运行下面的 update-rc.d 命令:

# update-rc.d sshd enable
# update-rc.d postfix enable

在 Fedora 22/Debian 8.x 中

鉴于 Fedora 22 和 Debian 8.x 已经用 Systemd 代替了 SysVinit 来作为默认的初始化系统,我们只需运行下面的命令来开启 sshd 和 postfix 服务:

# systemctl start sshd postfix

现在,为了使得它们在每次开机启动时可以自动运行,我们需要运行下面的 systemctl 命令:

# systemctl enable sshd postfix

Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/postfix.service to /usr/lib/systemd/system/postfix.service.

3. 下载 GitLab

现在,我们将使用 curl 从官方的 GitLab 社区版仓库下载二进制安装文件。首先,为了得到所需文件的下载链接,我们需要浏览到该软件仓库的页面。为此,我们需要在运行着相应操作系统的 linux 机器上运行下面的命令。

在 Ubuntu 14.04 中

由于 Ubuntu 和 Debian 使用相同的 debian 格式的安装包,我们需要在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=debs 下搜索所需版本的 GitLab,然后点击有着 ubuntu/trusty 标签的链接,即我们运行着的 Ubuntu 14.04。接着一个新的页面将会出现,我们将看到一个下载按钮,然后我们在它的上面右击,得到文件的链接,然后像下面这样使用 curl 来下载它。

# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_8.1.2-ce.0_amd64.deb

Downloading Gitlab Ubuntu

在 Debian 8.x 中

与 Ubuntu 类似,我们需要在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=debs 页面中搜索所需版本的 GitLab,然后点击带有 debian/jessie 标签的链接,即我们运行着的 Debian 8.x。接着,一个新的页面将会出现,然后我们在下载按钮上右击,得到文件的下载链接。最后我们像下面这样使用 curl 来下载该文件。

# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/debian/jessie/gitlab-ce_8.1.2-ce.0_amd64.deb/download

Downloading Gitlab Debian

在 Fedora 22 中

由于 Fedora 使用 rpm 文件来作为软件包,我们将在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=rpms 页面下搜索所需版本的 GitLab,然后点击所需发行包的链接,这里由于我们运行的是 Fedora 22,所以我们将选择带有 el/7 标签的发行包。一个新的页面将会出现,在其中我们可以看到一个下载按钮,我们将右击它,得到所需文件的链接,然后像下面这样使用 curl 来下载它。

# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-8.1.2-ce.0.el7.x86_64.rpm/download

Downloading Gitlab Fedora

4. 安装 GitLab

在相应的软件源被添加到我们的 linux 机器上之后,现在我们将使用相应 linux 发行版本中的默认包管理器来安装 GitLab 社区版。

在 Ubuntu 14.04/Debian 8.x 中

要在运行着 Ubuntu 14.04 或 Debian 8.x linux 发行版本的机器上安装 GitLab 社区版,我们只需运行如下的命令:

# dpkg -i gitlab-ce_8.1.2-ce.0_amd64.deb

Installing Gitlab Ubuntu Debian

在 Fedora 22 中

我们只需执行下面的 dnf 命令来在我们的 Fedora 22 机器上安装 GitLab。

# dnf install gitlab-ce-8.1.2-ce.0.el7.x86_64.rpm

Installing Gitlab Fedora

5. 配置和开启 GitLab

GitLab 社区版已经成功地安装在我们的 linux 系统中了,接下来我们将要配置和开启它了。为此,我们需要运行下面的命令,这在 Ubuntu、Debian 和 Fedora 发行版本上都一样:

# gitlab-ctl reconfigure

Reconfiguring Gitlab

6. 允许通过防火墙

假如在我们的 linux 机器中已经启用了防火墙程序,为了使得 GitLab 社区版的 web 界面可以通过网络进行访问,我们需要允许 80 端口通过防火墙,这个端口是 GitLab 社区版的默认端口。为此,我们需要运行下面的命令。

在 iptables 中

Ubuntu 14.04 默认安装和使用的是 iptables。所以,我们将运行下面的 iptables 命令来打开 80 端口:

# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

# /etc/init.d/iptables save

在 firewalld 中

由于 Fedora 22 和 Debian 8.x 默认安装了 systemd,它包含了作为防火墙程序的 firewalld。为了使得 80 端口(http 服务) 能够通过 firewalld,我们需要执行下面的命令。

# firewall-cmd --permanent --add-service=http
success
# firewall-cmd --reload
success

7. 访问 GitLab Web 界面

最后,我们将访问 GitLab 社区版的 web 界面。为此,我们需要将我们的 web 浏览器指向 GitLab 服务器的网址,根据我们的配置,可能是 http://ip-address/http://domain.com/ 的格式。在我们成功指向该网址后,我们将会看到下面的页面。

Gitlab Login Screen

现在,为了登录进面板,我们需要点击登录按钮,它将询问我们的用户名和密码。然后我们将输入默认的用户名和密码,即 root5iveL!fe 。在登录进控制面板后,我们将被强制要求为我们的 GitLab root 用户输入新的密码。

Setting New Password Gitlab

8. 创建仓库

在我们成功地更改密码并登录到我们的控制面板之后,现在,我们将为我们的新项目创建一个新的仓库。为此,我们需要来到项目栏,然后点击 新项目 绿色按钮。

Creating New Projects

接着,我们将被询问给我们的项目输入所需的信息和设定,正如下面展示的那样。我们甚至可以从其他的 git 仓库提供商和仓库中导入我们的项目。

Creating New Project

做完这些后,我们将能够使用任何包含基本 git 命令行的 Git 客户端来访问我们的 Git 仓库。我们可以看到在仓库中进行的任何活动,例如创建一个里程碑,管理问题,合并请求,管理成员,便签,Wiki 等。

Gitlab Menu

总结

GitLab 是一个用来管理 git 仓库的很棒的开源 web 应用。它有着漂亮的带有诸多酷炫功能的响应式界面。它还打包有许多酷炫功能,例如管理群组,分发密钥,持续集成,查看日志,广播消息,钩子,系统 OAuth 应用,模板等。(注:OAuth 是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。--- 摘取自 维基百科上的 OAuth 词条) 它还可以和大量的工具进行交互如 Slack,Hipchat,LDAP,JIRA,Jenkins,有很多类型的钩子和完整的 API。它至少需要 2 GB 的内存和 2 核 CPU 来流畅运行,支持多达 500 个用户,但它也可以被扩展到多个工作服务器上。

假如你有任何的问题,建议,回馈,请将它们写在下面的评论框中,以便我们可以提升或更新我们的内容。谢谢!


via: http://linoxide.com/linux-how-to/install-gitlab-on-ubuntu-fedora-debian/

作者:Arun Pyasi 译者:FSSlc 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

QGit是一款由Marco Costalba用Qt和C++写的开源的图形界面 Git 客户端。它是一款可以在图形界面环境下更好地提供浏览版本历史、查看提交记录和文件补丁的客户端。它利用git命令行来执行并显示输出。它有一些常规的功能像浏览版本历史、比较、文件历史、文件标注、归档树。我们可以格式化并用选中的提交应用补丁,在两个或多个实例之间拖拽并提交等等。它允许我们用它内置的生成器来创建自定义的按钮去执行特定的命令。

这里有简单的几步在Ubuntu 14.04 LTS "Trusty"中编译并安装QGit客户端。

1. 安装 QT4 库

首先在ubuntu中运行QGit需要先安装QT4库。由于apt是ubuntu默认的包管理器,同时qt4也在官方的仓库中,因此我们直接用下面的apt-get命令来安装qt4。

$ sudo apt-get install qt4-default

2. 下载QGit压缩包

安装完Qt4之后,我们要安装git,这样我们才能在QGit中克隆git仓库。运行下面的apt-get命令。

$ sudo apt-get install git

现在,我们要使用下面的git命令来克隆QGit客户端的仓库。

$ git clone git://repo.or.cz/qgit4/redivivus.git

Cloning into 'redivivus'...
remote: Counting objects: 7128, done.
remote: Compressing objects: 100% (2671/2671), done.
remote: Total 7128 (delta 5464), reused 5711 (delta 4438)
Receiving objects: 100% (7128/7128), 2.39 MiB | 470.00 KiB/s, done.
Resolving deltas: 100% (5464/5464), done.
Checking connectivity... done.

3. 编译 QGit

克隆之后,我们现在进入redivivus的目录,并创建我们编译需要的makefile文件。进入目录,运行下面的命令。

$ cd redivivus

接下来,我们运行下面的命令从qmake项目文件(qgit.pro)来生成新的Makefile。

$ qmake qgit.pro

生成Makefile之后,我们现在终于可以编译qgit的源代码并生成二进制。首先我们要安装make和g++包用于编译,因为这是一个用C++写的程序。

$ sudo apt-get install make g++

现在,我们要用make命令来编译代码了。

$ make

4. 安装 QGit

成功编译QGit的源码之后,我们就要在Ubuntu 14.04中安装它了,这样就可以在系统中执行它。因此我们将运行下面的命令。

$ sudo make install

cd src/ && make -f Makefile install
make[1]: Entering directory `/home/arun/redivivus/src'
make -f Makefile.Release install
make[2]: Entering directory `/home/arun/redivivus/src'
install -m 755 -p "../bin/qgit" "/usr/lib/x86_64-linux-gnu/qt4/bin/qgit"
strip "/usr/lib/x86_64-linux-gnu/qt4/bin/qgit"
make[2]: Leaving directory `/home/arun/redivivus/src'
make[1]: Leaving directory `/home/arun/redivivus/src'

接下来,我们需要从bin目录下复制qgit的二进制文件到/usr/bin/,这样我们就可以全局运行它了。

$ sudo cp bin/qgit /usr/bin/

5. 创建桌面文件

既然我们已经在ubuntu中成功安装了qgit,我们来创建一个桌面文件,这样QGit就可以在我们桌面环境中的菜单或者启动器中找到了。要做到这点,我们要在/usr/share/applications/创建一个新文件叫qgit.desktop。

$ sudo nano /usr/share/applications/qgit.desktop

接下来复制下面的行到文件中。

[Desktop Entry]
Name=qgit
GenericName=git 图形界面 viewer
Exec=qgit
Icon=qgit
Type=Application
Comment=git 图形界面 viewer
Terminal=false
MimeType=inode/directory;
Categories=Qt;Development;RevisionControl;

完成之后,保存并退出。

6. 运行 QGit 客户端

QGit安装完成之后,我们现在就可以从任何启动器或者程序菜单中启动它了。要在终端下面运行QGit,我们可以像下面那样。

$ qgit

这会打开基于Qt4框架图形界面模式的QGit。

QGit Viewer

总结

QGit是一个很棒的基于QT的git客户端。它可以在Linux、MAC OSX和 Microsoft Windows所有这三个平台中运行。它帮助我们很容易地浏览历史、版本、分支等等git仓库提供的信息。它减少了使用命令行的方式去执行诸如浏览版本、历史、比较功能的需求,并用图形化的方式来简化了这些任务。最新的qgit版本也在默认仓库中,你可以使用 apt-get install qgit 命令来安装。因此,QGit用它简单的图形界面使得我们的工作更加简单和快速。


via: http://linoxide.com/ubuntu-how-to/install-qgit-viewer-ubuntu-14-04/

作者:Arun Pyasi 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出