热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

git简单入门指南

git-简单入门指南前言:通过网上检索到的资料和个人常用到的现分析总结,并记录博客文档,用于复习和分享!1.创建新仓库创

git - 简单入门指南



前言:通过网上检索到的资料和个人常用到的现分析总结,并记录博客文档,用于复习和分享!


1.创建新仓库

创建新文件夹,然后打开,并执行

git init

以创建新的git仓库


2.检出仓库

执行如下命令以创建一个本地仓库的克隆版本(还未尝试)

git clone /path/to/repository

如果是远程服务器(如 Gitlab)上的仓库,你要输入的命令是这样的

git clone username@host:/path/to/repsoitory

3.关于Git的工作流程:工作流

你的本地仓库由git维护的三颗“树”组成:


  • 第一个是你的工作目录,它持有实际的文件;
  • 第二个是缓存区(index),它像一个缓存区域,零时保存你的改动;
  • 最后是HEAD,它指向你最后一次提交的结果。

如图(原图源自:此处)
工作流


4.添加和提交(常用)

第一步:你可以提出更改(把它们添加到缓存区),使用如下命令:

git add <filename>
git add *

第二步&#xff1a;使用如下命令以实际提交改动

git commit -m "代码提交信息"

目前可以确定的是&#xff0c;你的改动已经提交到了HEAD&#xff0c;但是还没有到你的远端仓库。

第三步&#xff1a;你的改动现在已经在本地仓库的HEAD中。执行如下命令可将这些改动提交到远端仓库&#xff1a;

git push origin master

当然&#xff0c;你可以把master换成你想要推送的任何分支

另外&#xff0c;如果你还没有克隆现有仓库&#xff0c;并欲将你的仓库连接到某个远程服务器&#xff0c;你可以使用如下命令&#xff1a;

git remote add origin<server>

完成&#xff1a;如此你就能够将你的改动推送到所添加的服务器上去。


5.分支(我个人比较难理解)

分支
例如如下操作&#xff1a;


  1. 创建一个叫做“feature_x”的分支&#xff0c;并切换过去:

    git checkout -b feature_x

  2. 切换回主分支&#xff1a;

    git checkeout master

  3. 再把新建的分支删掉&#xff1a;

    git branch -d feature_x

  4. 除非你将分支推送到远程仓库&#xff0c;不然该分支就是不为他人所见到的&#xff08;对他人不可见&#xff09;&#xff1a;

    git push origin <branch>


6.更新与合并

日常工作中经常使用的操作,就是更新你的本地仓库至最新的改动&#xff0c;然后在上面进行进一步修改和开发:

git pull

以在你的工作目录中 获取&#xff08;fetch&#xff09;并和并&#xff08;merge&#xff09;远端的改动。如果要合并其他分支到你的当前分支&#xff08;例如master&#xff09;&#xff0c;执行如下&#xff1a;

git merge<branch>

在这两种情况下&#xff0c;git都会尝试去自动合并并改动。遗憾的是&#xff0c;这可能并非每次都会成功&#xff0c;并可能出现冲突&#xff08;conflicts&#xff09;。这时候就需要你修改这些文件来手动合并这些冲突。改完之后&#xff0c;你还需要执行如下命令将它们标记为合并成功&#xff08;这一块我就有点不懂了&#xff0c;日后看看&#xff09;:

git add <filename>

在合并改动之前&#xff0c;你可以使用如下命令浏览差异:

git diff<source_branch> <target_branch>

7.标签

目的&#xff1a;为软件发布创建标签是推荐的。这个概念早已存在&#xff0c;在SVN&#xff08;没使用过&#xff09;中也有。你可以执行如下命令创建一个叫做1.0.0的标签&#xff1a;

git tag 1.0.0 1b2e1d63ff

1b2e1d63ff 就是你想要标记的提交ID的前10位字符。可以使用下列命令获取提交的ID&#xff1a;

git log

你也可以使用少一点的提交ID前几位&#xff0c;只要它的指向具有唯一性。


8.log 日志查看

目的&#xff1a;如果你想要了解本地仓库的历史记录&#xff0c;最简单的命令就是使用&#xff1a;

git log

你还可以添加一些参数来修改他的输出&#xff0c;从而得到自己想要的结果。只看某一个人的提交记录:

git log --author&#61;bob

一个压缩后的每一条提交记录占一行的输出&#xff1a;

git log --pretty&#61;oneline

如果你想通过ASCII艺术的树形结构来展示所有的分支&#xff0c;每个分支都标示它的名字和标签&#xff1a;

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

看看那些文件改变了&#xff1a;

git log --name-status

这些知识你可以使用的参数中很小的一部分。更多的信息可以查看:

git log --help

9.替换本地的改动

假如&#xff0c;你操作失误&#xff08;最好永远不要&#xff09;,你可以使用如下命令替换本地改动&#xff1a;

git checkout --<filename>

此命令会使用HEAD中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动以及新文件都不会受到影响。

假如你想丢弃你在本地的所有改动与提交&#xff0c;你可以到服务器上获取最新版本的历史&#xff0c;并将你本地主分支指向它&#xff1a;

git fetch origin

git reset --hard origin/master

10.另外&#xff1a;实用小贴士


  1. 内建的图形化git:

    gitk

  2. 彩色的git输出&#xff1a;

    git config color.ui true

  3. 显示历史纪录时&#xff0c;每个提交的信息只显示一行&#xff1a;

    git config format.pretty oneline

  4. 交互式添加文件到缓存区&#xff1a;

    git add -i


最后&#xff0c;参考


  • 感谢&#xff1a;https://rogerdudler.github.io/git-guide/index.zh.html
  • 主要参照上述文件资料&#xff01;

推荐阅读
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 初始化初始化本地空版本库,仓库,英文名repositorymkdirtest&&cdtestgitinit克隆项目到本地gitclone远程同 ... [详细]
  • 先记住几个专用名词,如下:Workspace:工作区IndexStage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库#在当前目录新建一个G ... [详细]
  • SVN 功能说明(简版)
    Subversion(SVN)是什么?SVN是一种版本管理系统,是开源软件的基石。即使在沟通充分的情况下,多人维护同一份源代码的一定也会 ... [详细]
  • IamsettingupApacheserverwithTortoiseSVNforalocalsourcecoderepository.Ihaveobservedt ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 电信网为不能访问联通服务器的网站_老板说网站慢,我们总结了三大阶段提升性能...
    作者:李平来源:https:www.cnblogs.comleefreemanp3998757.html前言在前一篇随笔《大型网站系统架构的演化》中&# ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文介绍了iPhone降频开关的位置和设置方法,以及解释了内存中的其他文件的含义和清理方法。同时提醒用户,在内存不足时系统会自动删除这些文件来腾出容量,因此不必过于担心。 ... [详细]
  • eclipse_在eclipse上使用github,向github中提交项目
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了在eclipse上使用github,向github中提交项目相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
禁灭19
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有