搜索
您的当前位置:首页正文

分布式版本控制系统Git——入门基础

来源:哗拓教育
Git_logo

认识Git

当你点开文章链接的时候,或多或少你已经风闻了一些Git的故事。与Linux内核一样,Git诞生于Linus Torvalds之手,并与Linux、开源、代码存在这千丝万缕的关系。

认识Git的最快速方式当然是通过网络搜索,下面简单列举一些链接:

  • 官方网站:信息的源头
  • 官方推荐教程:中英文、PDF、mobi等格式面面俱到
  • :了解多数国人的科普频道

为什么是Git

快速浏览了上面的链接后,相信你脑海中已经有了版本控制和Git的基本概念了。那么问题来了,为什么要进行版本控制,为什么又非得是Git?

版本控制的重要性,对于码农/极客无需解释。对于普通用于而言,我们分类举例解释。如果你是非计算机的工程类研究者(笔者也是),高效的数值模拟和数据处理都离不开代码,可能版本管理没有那么重要(反复建文件夹也能分清)。但是,研究中可能更多地使用别人开发的库和工具包,如果兴趣再浓厚点你还会参与部分源代码学习,那么接触版本控制和GitHub也只是时间问题了。更重要的是,版本管理是便于高效的团队协作,利用团队的力量进行设计和研究。如果你是文商科学者,代码可能消失了,团队细节协作方式也减少了。但是,如果你进行大批量的文字创作,经典了LaTeX排版和当下流行了Markdown都是码字神器,将这些工具与版本控制结合将带来神奇的营销效果。

Git相比其他版本控制的优势是什么?分布式、GitHub、Linux背景三大要素成就了Git的迅速推广。网络关于这方面的讨论已经很多了,不再赘述,推荐伯乐在线上的两篇文章:

如何安装Git

安装并配置Git是使用的前提。Git具有多平台的特性,在windows、Mac OSX和Linux上都能够方便安装,甚至是目前很多Linux发行版直接就自带Git。Git的官方下载链接如下:

Git妙用网站推荐

Git功能如此强大,当然也只有在频繁使用的时候才能得到展示。同样,码农业界已经没有疑问了,但推荐以下网站供新用户摸索。

  • :鼎鼎大名,上面托管了Linux等重量级代码,被誉为“代码基因库”,上面也能搜索到一些常用数值计算库、LaTeX模版、自由撰稿数目、还能构建个人静态主页
  • :国产化的GitHub,当然它在官网上很聪明地做了否认的声明,并强调自身优势是国内特殊情况下的私有代码托管
  • :阿里巴巴的强大后盾和动力,值得观望其发展

Git常用操作命令

初次运行Git前的配置 —— git config

Git自带一个git config的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:

  • /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。
  • ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 可以传递 --global 选项让 Git 读写此文件。
  • 当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。

每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。在 Windows 系统中,Git 会查找 $HOME 目录下(一般情况下是 C:\Users\$USER)的 .gitconfig 文件。 Git 同样也会寻找 /etc/gitconfig 文件,但只限于 MSys 的根目录下,即安装 Git 时所选的目标位置。

文本编辑器(可选项)
<pre><code>
git config --global core.editor vim
</code></pre>

检查配置信息
<pre><code>
git config --list
git config user.name
</code></pre>

获取帮助
<pre><code>
git help <verb>
</code></pre>

基本操作命令

Git的基本操作包含:创建版本库(repository)、开始或停止跟踪(track)文件、暂存(stage)或提交(commit)更改。 本章也将向你演示如何配置 Git 来忽略指定的文件和文件模式、如何迅速而简单地撤销错误操作、如何浏览你的项目的历史版本以及不同提交(commits)间的差异、如何向你的远程仓库推送(push)以及如何从你的远程仓库拉取(pull)文件。

创建版本库(repository)

创建版本库又两种方式:第一种是在现有项目或目录下导入所有文件到 Git 中; 第二种是从一个服务器克隆一个现有的 Git 仓库。

在现有目录中初始化仓库:
如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入:
<pre><code>
cd currentProjectDir/
git init
git add filename.c
git add LICENSE
git commit -m 'initial project version'
</code></pre>

更新版本库的修改

现在我们手上有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝。 接下来,对这些文件做些修改,在完成了一个阶段的目标之后,提交本次更新到仓库。

请记住,你工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。 已跟踪的文件是指那些被纳入了版本控制的文件,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。

检查当前文件状态:
要查看哪些文件处于什么状态,可以用 git status 命令:
<pre><code>
git status
</code></pre>

还可以使用状态简览模式:
<pre><code>
git status -s
</code></pre>

返回的结果中,新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。

跟踪新文件:
使用命令 git add 开始跟踪一个文件
<pre><code>
git add filename
</code></pre>

暂存已修改文件:
如果我修改了一个名为 CONTRIBUTING.md并且已被跟踪的文件,然后希望将修改结果暂存:
<pre><code>
git add CONTRIBUTING.md
</code></pre>

提交更新:
现在的暂存区域已经准备妥当可以提交了。 在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。 这些修改过的文件只保留在本地磁盘。 所以,每次准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit:
<pre><code>
git commit -m "add some label here"
</code></pre>

移动、删除等操作:
移动、删除等常规操作都需要在原命令前添加 git 。

远程服务器上的Git操作

至此,Git 的操作都是在本机上进行,并未涉及远程服务器和协作问题。这里借助GitHub的代码托管说明 Git 的远程服务器搭建与操作。

GitHub

GitHub 是最大的 Git 版本库托管商,是成千上万的开发者和项目能够合作进行的中心。 大部分 Git 版本库都托管在 GitHub,很多开源项目使用 GitHub 实现 Git 托管、问题追踪、代码审查以及其它事情。 所以,尽管这不是 Git 开源项目的直接部分,但如果想要专业地使用 Git,你将不可避免地与 GitHub 打交道,所以这依然是一个绝好的学习机会。

账户的创建和配置

完成首次推送

向GitHub推送的命令包含两个变量:

  • <REMOTENAME>:远程端的名称,例如origin
  • <BRANCHNAME>:分支的名称,例如master

推送命令格式如下:
<pre><code>
git push <REMOTENAME> <BRANCHNAME>
</code></pre>

完成此次修改的推送:
<pre><code>
git push -u origin master
</code></pre>

写在后面

附录:Git基本常用命令

  • mkdir: XX (创建一个空目录 XX指目录名)
  • pwd: 显示当前目录的路径。
  • git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
  • git add XX 把xx文件添加到暂存区去。
  • git commit –m “XX” 提交文件 –m 后面的是注释。
  • git status 查看仓库状态
  • git diff XX 查看XX文件修改了那些内容
  • git log 查看历史记录
  • git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一个版本
  • cat XX 查看XX文件内容
  • git reflog 查看历史记录的版本号id
  • git checkout -- XX 把XX文件在工作区的修改全部撤销。
  • git rm XX 删除XX文件
  • git remote add origin 关联一个远程库
  • git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
  • git clone 从远程库中克隆
  • git checkout –b dev 创建dev分支 并切换到dev分支上
  • git branch 查看当前所有的分支
  • git checkout master 切换回master分支
  • git merge dev 在当前的分支上合并dev分支
  • git branch –d dev 删除dev分支
  • git branch name 创建分支
  • git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
  • git stash list 查看所有被隐藏的文件列表
  • git stash apply 恢复被隐藏的文件,但是内容不删除
  • git stash drop 删除文件
  • git stash pop 恢复文件的同时 也删除文件
  • git remote 查看远程库的信息
  • git remote –v 查看远程库的详细信息
  • git push origin master Git会把master分支推送到远程库对应的远程分支上

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

Top