前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >写在2018第一天:编程之路始于Git

写在2018第一天:编程之路始于Git

作者头像
企鹅号小编
发布2018-01-11 14:53:11
1K0
发布2018-01-11 14:53:11
举报
文章被收录于专栏:企鹅号快讯企鹅号快讯

git是目前世界上使用最广泛的分布式版本控制系统,由大名鼎鼎的Linus花了两周时间写成,同时在2008年使用给git作为唯一版本库格式托管平台gitHub网站上线,已有众多知名开源项目迁移至github。

git是分布式版本控制系统,与之对应的是集中式版本控制。分布式和集中式最大的不同,分布式并不是提取最新版本的文件快照,而是把代码仓库完整的克隆下来。每一次克隆操作都是对代码仓库的完整备份。所以,如果代码仓库的服务器发生故障,都可以用任何一个本地镜像仓库恢复,整个项目的历史记录都不会丢失。同时Git拥有完善的分支管理系统,可以指定与多个远程代码仓库交互协作开发。

git已经成为软件开发者必须会的技能之一,正确熟练的使用git对团队合作、提高工作效率都是有很大帮助的。很多公司包括硬件工程师都必须要熟练使用git,何况软件工程师呢!

基于git的托管平台除了github还有很多,国内免费也有很多,如码云中国(https://gitee.com);Coding(https://coding.net),国内的git平台下载速度都比较快,也支持一定数量的免费私有项目。

同时git拥有GitHub for Desktop、Source Tree等众多优秀且功能强大的图形化客户端工具。不过本篇主要讲解git命令行操作,因为只有在命令行模式下才能了解学习git的所有命令,这样操作GUI工具也不会存在困难。同时我推荐在熟练使用git后可通过命令行与GUI配合使用的方式提高工作效率。

git项目分为三个工作区域:工作目录、暂存区域、本地仓库及git仓库。其中:

Workspace:工作目录,存放从git仓库的压缩数据库中提取出来的文件,存放在本地磁盘上可修改。

Index:暂存区域,存放的是一个文件,保存了下次将要提交的文件列表信息。

Repository:本地仓库。

Remote:远程仓库,是Git用来保存项目的元数据和对象数据的地方。

git基本工作流程:

1.在工作目录中修改文件

2.暂时文件,将文件的快照放入暂存区域。

3.提交更新,找到暂时区域的文件,将快照永久性的存储到git仓库目录

一、Git安装与配置

1)安装:

Ubuntu系统默认没有安装Git,可通过sudo apt-get install git安装。

Windows下有很多支持Git的图形化工具,推荐安装SourceTree。

2)git配置:

git的配置文件为.gitconfig,它可以在用户主目录下,用于全局配置;也可以在项目的目录下,用于项目配置。所有操作如果添加了--global就是对全局配置文件操作;不加--global同时在项目目录下操作就是操作项目配置文件。

查看git配置信息:git config [--global] --list

编辑git配置文件:git config -e [--global]

修改git默认编辑器:git config [--global] core.editor vi

长期存储密码:git config [-- global] credential.helper store

查看所有账户git config --get-all user.name

设置用户名:git config [--global] user.name

设置邮箱:git config [--global] user.email

二、基本操作1.git init

初始化本地仓库,在当前目录下生成.git目录,该目录为仓库,而当前目录为工作空间。

2.查看信息

查看本地文件夹所有修改的文件

git status

查看当前分支的版本历史

git log

查看暂存区与工作区的差异

git diff

3.git add

添加指定文件到暂存区:

git add ...

添加指定目录到暂存区:

git add

添加当前目录下的所有文件:

git add .

4.git rm

删除工作区文件,且将这次删除放入暂存区

git rm ...

停止跟踪指定文件,但该文件会保留在工作区

git rm --cached

5.git commit

提交暂存区的文件到本地仓库

git commit -m“commit log”

提交暂存区的指定文件到本地仓库

git commit ... -m“commit log”

提交工作区自上次commit之后的变化至仓库区,无需git add

git commit -a

提交时显示所有修改信息

git commit -v

6.git clone

从远程主机克隆一个版本库,该命令会在本地主机生成一个目录,与远程主机的版本库同名。

git clone

示例:git clone https://github.com/espressif/ESP8266_RTOS_SDK

如需指定不同的目录名,可以将目录名作为git clone命令的第二个参数。

git clone

示例:git clone https://github.com/espressif/ESP8266_RTOS_SDK esp8266

在clone版本库的时候,使用的远程主机自动被命名为origin,如需使用其他主机名需使用-o选项。

git clone -o

示例:git clone -o esp https://github.com/espressif/ESP8266_RTOS_SDK

克隆指定分支:

git clone -b

示例:git clone -b 1.4.x https://github.com/espressif/ESP8266_RTOS_SDK

如果git仓库有子模块,可通过克隆命令一次拉取全部子模块。

git clone --recursive 。

示例:ESP32的SDK内有很多第三方开源组件作为子模块,如果不拉取全部,将导致有些功能无法正常编译。git clone --recursive https://github.com/espressif/esp-idf

7.git remote

git要求每个远程主机都必须指定一个主机名,git remote命令就用于管理主机名。

列出已经存在的所有远程主机:

git remote

查看远程主机的网址:

git remote -v

示例:当前有1台主机,主机名为origin

git remote -v

origin https://github.com/espressif/ESP8266_RTOS_SDK (fetch)

origin https://github.com/espressif/ESP8266_RTOS_SDK (push)

添加远程主机:

git remote add

示例:git remote add origin https://github.com/espressif/ESP8266_RTOS_SDK

删除远程主机:

git remote rm

示例:git remote rm origin

更改远程主机名:

git remote rename

示例:git remote rename origin esp

8.git pull

git pull用于拉取远程主机某个分支的更新,再与本地的指定分支合并。

git push :

示例:拉取origin主机的dev分支,与本地的master分支合并。git pull origin dev:master。如远程分支是与当前分支合并,则冒号后面的部分可以省略。

git会自动在本地分支与远程分支之间建立一种追踪关注。在git clone的时候,所有本地分支默认与远程主机的同名分支建立追踪关系,也就是本地的master分支自动追踪origin/master分支。

如当前分支与远程分支存在追踪关系,可省略远程分支名

示例:git pull origin

如当前分支只有一个追踪分支,可省略远程主机名

示例:git pull

9.git push

git push用于将本地分支更新,推送至远程主机,操作与git pull类同。

git push :

如果当前分支与多个主机存在追踪关系,可以使用-u选项指定一个默认主机,这样后面就不需要加任何参数直接使用git push。git push -u origin master。将本地的master分支推送到origin主机,同事指定origin为默认主机。

强制推送当前分支到远程仓库,即使有冲突;该指令要慎用。

git push --force

推送所有分支到远程仓库

git push --all

10.git branch

分支管理在git里是很有用的的一个功能。

列出所有本地分支

git branch

列出所有远程分支

git branch -r

列出所有本地和远程分支

git branch -a

新建分支,但不切换至新建的分支

git branch

新建分支,同时切换至新建的分支

git checkout -b

拉取远程分支并创建本地分支

git check -b origin/

切换到指定分支

git checkout

删除分支

git branch -d

强制删除分支

git branch -D

删除远程分支

git push --delete origin

合并指定分支到当前分支

git merge

11.文件恢复、重置

分别使用git checkout、git reset指令,使用这些操作后,很多修改的文件将被取消,需慎用。

恢复暂存区的指定文件到工作区

git checkout

恢复指定commit的指定文件到工作区

git checkout

恢复暂存区的所有文件到工作区

git checkout .

重置暂存区的指定文件,与上一次commit保持一致,但工作区不变

git reset

重置暂存区与工作区,与上一次commit保持一致

git reset --hard

12.git tag

列出所有tag

git tag

新建一个tag

git tag

删除本地tag

git tag -d

删除远程tag

git push origin :refs/tags/

查看tag信息

git show

提交指定tag

git push origin

提交所有tag

git push origin --tags

三、实战流程:1.新建仓库

1)初始化本地仓库:git init

2)添加文件至暂存区:

添加指定文件:git add README.md

添加所有文件:git add .

3)提交至本地仓库:

git commit -m“first commit”

4)添加远程主机:

git remote add origin https://github.com/espressif/ESP8266_RTOS_SDK

5)提交至远程主机origin的master分支下:git push -u origin master,并建立跟踪关系。以后提交更新可以直接使用git push。

2.已存在仓库

1)克隆:git clone https://github.com/espressif/ESP8266_RTOS_SDK

2)查看本地文件更新状态:git status

3)查看更新日志:git log

4)拉取更新:git pull

本文来自企鹅号 - 燕十三的嵌入式之旅媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 燕十三的嵌入式之旅媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档