因为任职的公司在管理版本时,基本使用 Git 命令行方式,所以把 Git 简单重新整理下。
本文不会长篇大论的讲解 Git,因为在 Git 官网有非常详细的说明。只会基于作为小白式的开始,介绍项目中最常用的一些命令。能够使大家快速地上手使用。
当然除了使用命令行,还有一些 GUI 工具,比如 SourceTree、Github 等。不过在了解 Git 的工作原理后,可以在使用 GUI 时更加游刃有余。
如有错误,欢迎指正。如有建议,欢迎交流。
鉴于全文文章过长时,人的注意力难以集中。这里贴出 Git 介绍和 Git 摘要。
把 “Git 如何使用” 放在了 Notion 原文 里。可能打开较慢,请耐心等待。
什么是 Git
Git 是一个免费开源的分布式版本控制系统。相比于其他的 VCS(Version Control Systems),其特点主要是分布式和强大的分支管理。
如何理解版本控制系统呢?
想必大家在写文档或毕业设计时,出于某种“以前的内容可能会再次用到”的想法,在修改文档时一般会拷贝一份之前的文档,然后再在拷贝的文档上进行删除、修改或其他编辑。然后在经历过多次修改之后,可能出现诸如“xxx初版”、“xxx改版”、“xxx最终版”、“xxx最终不改版”.....。
然后有一天,当你想看下某段文字在编辑之前的内容,结果却不记得是在哪个拷贝文件里。只能一头乱麻的一个个文件的翻看。
如果这时候,有一个系统能够自动帮你记录每次修改的修改记录。在需要时,只需要查看某次改动即可,这样是不是很方便?
Git 就是具有这种功能的系统.
什么是集中式、分布式呢?
集中式版本控制系统(CVCS:Centralized Version Control Systems)是在本地版本控制系统的基础上进一步发展。
集中式是把所有版本文件放在中央服务器的。当工作时,需要从服务器获取最新的版本,然后进行修改。修改之后,再提交到中央服务器。
比如 SVN 就是集中式的。
集中式的相较于本地式的优点是,每个人都在某种程度上知道项目中其他人再做什么。管理员也可以精准地把控。
集中式的缺点是,需要联网才能工作,如果网速不能达到要求,那么整个协同的过程是非常让人不爽的。其次是风险太大,如果服务器出现了故障或者数据丢失,在没有备份的情况下,简直是灾难。
分布式版本控制系统(DVCS:Distributed Version Control Systems)不同于集中式版本控制系统。
分布式是没有“中央服务器”的,每个人电脑上的本地仓库都保存了整个项目的完整备份。
分布式的优点,不需要联网工作,每个人的修改都可以先提交到本地仓库,然后在合适的时机再提交到远程仓库从而推送给其他人看到。不会出现数据丢失的情况。
先丢一份 Git 命令摘要,便于快速查找。 Notion 原文是对 Git 的简单介绍,便于帮助理解。
摘要
说明:以下所有涉及到
git clone
// 使用时
git clone [email protected]
安装在 macOS
通过安装 Xcode 安装
-
通过 Homebrew 安装
$ brew install git
通过提示安装。比如在终端(Terminal)中输入
git --version
,如果没有安装,则会提示安装。
配置
对所有本地仓库操作设置关联的用户名和邮箱地址:
git config --global user.name
git config --global user.email
创建仓库
创建本地仓库:
git init
将本地仓库与远程库关联:
git remote add origin
克隆远程仓库:
git clone
更改
将文件进行快照:
git add
将所有文件进行快照:
git add .
将快照提交到本地仓库:
git commit -m "Descriptive Message"
在 commit 之前让 Git 自动保存快照(即跳过手动保存至暂存区):
git commit -a -m "Descriptive Message"
-a
会包含所有 Git 跟踪的改动文件,并在 commit 之前自动保存快照。
查看当前分支的版本历史:
git log
查看指定 commit 的数据和内容变化:
git show
查看仓库状态:
git status
撤销
撤销工作区的修改:
git checkout --
撤销暂存区的快照,保留改动内容在工作区:
git reset HEAD
撤销指定的 commit 之后所有的提交,但本地保留改动内容:
git reset
或
git reset --soft
撤销所有提交到指定的 commit,不会保留之后的记录:
git reset --hard
请谨慎使用 --hard !
分支
查看所处分支:
git branch
创建新分支:
git branch
切换指定分支:
git checkout
将分支合并到当前分支:
git merge
删除指定分支:
git branch -d
同步更改
下载远程库跟踪分支的所有历史:
git fetch
将远程跟踪分支合并到当前本地分支:
git merge
获取远程跟踪分支的所有新提交,更新至本地对应分支(是 fetch 和 merge 的结合):
git pull
将本地分支提交到远程仓库:
git push
标签
创建标签:
git tag
查看标签:
git tag
删除标签:
// 删除本地标签
git tag -d
// 删除远程库标签
git tag -d
git push origin :refs/tags/
把标签推送至远程库:
git push origin
// 推送本地所有未推送的标签
git push origin --tags
别名
创建别名:
git config --global alias.
删除别名:
git config --global unset alias.
最后,命令行也可以与 GUI 配合使用。比如直接把文件拖入 SourceTree,即可在 SourceTree 中进行使用。
Git 怎么用
请移步 Notion 原文。可能打开较慢,客官请耐心等待。