Git 快速上手

因为任职的公司在管理版本时,基本使用 Git 命令行方式,所以把 Git 简单重新整理下。

本文不会长篇大论的讲解 Git,因为在 Git 官网有非常详细的说明。只会基于作为小白式的开始,介绍项目中最常用的一些命令。能够使大家快速地上手使用。

当然除了使用命令行,还有一些 GUI 工具,比如 SourceTree、Github 等。不过在了解 Git 的工作原理后,可以在使用 GUI 时更加游刃有余。

如有错误,欢迎指正。如有建议,欢迎交流。

鉴于全文文章过长时,人的注意力难以集中。这里贴出 Git 介绍和 Git 摘要。

机智.jpg

把 “Git 如何使用” 放在了 Notion 原文 里。可能打开较慢,请耐心等待。
打工人.jpg

什么是 Git

Git 是一个免费开源的分布式版本控制系统。相比于其他的 VCS(Version Control Systems),其特点主要是分布式和强大的分支管理。

如何理解版本控制系统呢?


想必大家在写文档或毕业设计时,出于某种“以前的内容可能会再次用到”的想法,在修改文档时一般会拷贝一份之前的文档,然后再在拷贝的文档上进行删除、修改或其他编辑。然后在经历过多次修改之后,可能出现诸如“xxx初版”、“xxx改版”、“xxx最终版”、“xxx最终不改版”.....。

然后有一天,当你想看下某段文字在编辑之前的内容,结果却不记得是在哪个拷贝文件里。只能一头乱麻的一个个文件的翻看。

如果这时候,有一个系统能够自动帮你记录每次修改的修改记录。在需要时,只需要查看某次改动即可,这样是不是很方便?

Git 就是具有这种功能的系统.

什么是集中式、分布式呢?


集中式版本控制系统(CVCS:Centralized Version Control Systems)是在本地版本控制系统的基础上进一步发展。

集中式是把所有版本文件放在中央服务器的。当工作时,需要从服务器获取最新的版本,然后进行修改。修改之后,再提交到中央服务器。

比如 SVN 就是集中式的。


CVCS.png

集中式的相较于本地式的优点是,每个人都在某种程度上知道项目中其他人再做什么。管理员也可以精准地把控。

集中式的缺点是,需要联网才能工作,如果网速不能达到要求,那么整个协同的过程是非常让人不爽的。其次是风险太大,如果服务器出现了故障或者数据丢失,在没有备份的情况下,简直是灾难。

分布式版本控制系统(DVCS:Distributed Version Control Systems)不同于集中式版本控制系统。

分布式是没有“中央服务器”的,每个人电脑上的本地仓库都保存了整个项目的完整备份。


DVCS.png

分布式的优点,不需要联网工作,每个人的修改都可以先提交到本地仓库,然后在合适的时机再提交到远程仓库从而推送给其他人看到。不会出现数据丢失的情况。

先丢一份 Git 命令摘要,便于快速查找。 Notion 原文是对 Git 的简单介绍,便于帮助理解。

摘要

说明:以下所有涉及到 <xxx> 都是占位说明符,都可以整体替换对应的内容。比如:

git clone <url>
 
// 使用时
git clone git@git.com

安装在 macOS

  1. 通过安装 Xcode 安装

  2. 通过 Homebrew 安装

    $ brew install git
    
    
  3. 通过提示安装。比如在终端(Terminal)中输入 git --version,如果没有安装,则会提示安装。

配置

对所有本地仓库操作设置关联的用户名和邮箱地址:

git config --global user.name <name>
git config --global user.email <email>

创建仓库

创建本地仓库:

git init

将本地仓库与远程库关联:

git remote add origin <url>

克隆远程仓库:

git clone <url>

更改

将文件进行快照:

git add <file>

将所有文件进行快照:

git add .

将快照提交到本地仓库:

git commit -m "Descriptive Message"

在 commit 之前让 Git 自动保存快照(即跳过手动保存至暂存区):

git commit -a -m "Descriptive Message"

-a 会包含所有 Git 跟踪的改动文件,并在 commit 之前自动保存快照。

查看当前分支的版本历史:

git log

查看指定 commit 的数据和内容变化:

git show <commit>

查看仓库状态:

git status

撤销

撤销工作区的修改:

git checkout -- <file>

撤销暂存区的快照,保留改动内容在工作区:

git reset HEAD <file>

撤销指定的 commit 之后所有的提交,但本地保留改动内容:

git reset <commit>

或
git reset --soft <commit>

撤销所有提交到指定的 commit,不会保留之后的记录:

git reset --hard <commit>

请谨慎使用 --hard !

分支

查看所处分支:

git branch

创建新分支:

git branch <branchName>

切换指定分支:

git checkout <branchName>

将分支合并到当前分支:

git merge <branch>

删除指定分支:

git branch -d <branchName>

同步更改

下载远程库跟踪分支的所有历史:

git fetch

将远程跟踪分支合并到当前本地分支:

git merge

获取远程跟踪分支的所有新提交,更新至本地对应分支(是 fetch 和 merge 的结合):

git pull

将本地分支提交到远程仓库:

git push

标签

创建标签:

git tag <name>

查看标签:

git tag

删除标签:

// 删除本地标签
git tag -d <tagname>

// 删除远程库标签
git tag -d <tagname>
git push origin :refs/tags/<tagname>

把标签推送至远程库:

git push origin <tagname>

// 推送本地所有未推送的标签
git push origin --tags

别名

创建别名:

git config --global alias.<short command name> <command name>

删除别名:

git config --global unset alias.<short command name>

最后,命令行也可以与 GUI 配合使用。比如直接把文件拖入 SourceTree,即可在 SourceTree 中进行使用。

Git 怎么用

请移步 Notion 原文。可能打开较慢,客官请耐心等待。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342