git基础

参考:

官网git基础

git 文件的生命周期

文件的生命周期图:

git中的文件可以分为4个阶段.

  • Untracked : 这是目录中没有被跟踪的文件,即不在git项目中,使用 git commit 等命令对文件进行提交时不会提交这样的文件。只有使用 git add file_name 将文件添加到git 工程中,该文件才会得到分享,转换到Staged状态。除了这个状态,其他3个状态指的都是被跟踪的文件

  • Unmodified:git工程中没有经过改动的文件,即up-to-date的文件,处于当前状态的文件一旦被改动,则将会变文 Modified 状态。使用 git remove 指令可以将该状态下的文件变成Untraked 状态。

  • Modified:被改动过的文件待添加到 Staged 中的文件。

  • Staged : 等待更新到下一个生命周期的文件,commit 命令将会将处于该状态的文件进行提交,确认更改,这样一来文件又重新回到未修改状态,Unmodified。

git环境配置:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
$ git config --global core.editor emacs
$ git config --list

git 的基本命令

转到需要初始化的目录下,运行下面的命令,初始化一个已经存在的目录为git目录.

$ git init

从github上克隆一个工程目录,下面两条指令中的一个,区别在于是否另起目录名

$ git clone /https://github.com/libgit2/libgit2
$ git clone /https://github.com/libgit2/libgit2 NewDirectoryName

获取文件状态 ,第二条指令表示状态的缩写版

$ git status
$ git status -s

跟踪新的文件,文件状态从 untracked 变成 staged。

$ git add YourNewFileName

在目录下添加.gitignore文件,可以设置自动忽略的文件GitHub的ignore文件示例

查看已经被修改但没有Staged的文件

$ git diff

查看staged中即将被commit的文件有什么不同

$ git diff --staged

查看你目前已经Staged的所有文件

$ git diff --cached

提交修改,即提交Staged状态下的文件

_其第一条指令会在terminal打开默认的编辑器,让你写入相关信心,可以使用:git config --global core.editor 命令设置编辑器

$ git commit
$ git commit -m 'some message about your committing'

删除文件

>从目录删除
$ rm PROJECT.md
>从stage删除
$ git rm PROJECT.md
>不再跟踪文件
$ git rm --cached README

Moving Files

$ git mv fileFrom fileTo

查看日志 $ git log





撤销指令

撤销上一次commit操作
$ git commit --amend
将sraged中的文件撤回(unstaging a staged file)
$ git reset HEAD CONTRIBUTING.md
撤销你所做的修改(discard the changes you've made)
$ git checkout -- CONTRIBUTING.md

远程服务器

克隆一个远程项目
$ git clone https://github.com/schacon/ticgit
显示你的远程项目(Showing Your Remotes)
$ git remote -v
添加远程工程(Adding Remote Repositories)
命令句式:git remote add <shortname> <url>
$ git remote add pb https://github.com/paulboone/ticgit
Fetching and Pulling Your Remotes
$ git fetch [remote-name]
$ git push [remote-name] [branch-name]
Inspecting a Remote
$ git remote show [remote-name]
$ git remote show origin
Removing and Renaming Remotes
$ git remote rename pb paul
Removing (git remote remove or git remote rm)
$ git remote remove paul

Tagging

list your Tags
$ git tag
v0.1
v1.3
search by pattern
$ git tag -l "v1.8.5*"
Create Tags and Annotated Tags
$ git tag -a v1.4 -m "my version 1.4" ß
$ git show v1.4

Lighweight Tags,轻量标签只存储校验和

$ git tag v1.4-lw
$ git tag

为以前提交的版本设置标签,Tagging Later

首先使用git log 查看每个版本的校验和,然后使用git tag根据校验和设置标签,例子如下所示:

$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
$ git tag -a v1.2 9fceb02

分享标签,默认情况下,git push指令不会将标签上传到远程服务器上。这个操作需要自己显式的完成:git push origin [tagname]. 第二条指令式push所有标签。

$ git push origin v1.5
$ git push origin --tags

移除标签,在git中不能真正的删除标签。只能添加一个新的分支。(git checkout -b [branchname] [tagname]: )

$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'

Git Aliases

git中可以为变量名或者项目取缩写名,这个可以参考官网。

Github

https://help.github.com/articles/adding-a-remote/

git入门基础的更多相关文章

  1. Git入门基础详情教程

    前言 写了一篇文章<一篇文章了解Github和Git教程>还觉得不错,继续写了<为了Github默默付出,我想了解你>,那么继续写Git 基础知识. Git 官网:https: ...

  2. Git入门——基础知识问答

    问题一:为什么要选择Git作为Android开发的版本控制工具?     答:1)git是android项目和社区的统一语言.            2)高通版本发布频繁,需要与平台及时同步,快速re ...

  3. Git入门基础教程

    目录 一.Git的安装 1.1 图形化界面 1.2 命令行界面 二.本地仓库的创建与提交 2.1 图形化界面 2.1.1 首先在电脑上有一个空白目录 2.1.2 打开SourceTree 2.1.3 ...

  4. Git入门基础教程和SourceTree应用

    目录 一.Git的安装 1.1 图形化界面 1.2 命令行界面 二.本地仓库的创建与提交 2.1 图形化界面 2.1.1 首先在电脑上有一个空白目录 2.1.2 打开SourceTree 2.1.3 ...

  5. git的基础操作-入门

    本文是根据廖雪峰的git教程写的笔记:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b0 ...

  6. git入门学习(二):新建分支/上传代码/删除分支

    一.git新建分支,上传代码到新的不同分支  我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有we ...

  7. [置顶] 【Git入门之十五】Github操作指南

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12374633 最终篇,介绍一下Github网站的使用,主要是翻译为主,简化了 ...

  8. 分布式进阶(十六)Zookeeper入门基础

    Zookeeper入门基础 前言 在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据.如果在创建znode时Flag设置为EPHEMERAL,那么当 ...

  9. git 入门教程

    git 入门教程之协同开发 前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协 ...

随机推荐

  1. sql跳过非工作日(周末和节假日)

    简介:场景1:基于开始日期和工期,推算结束日期. 场景2:基于开始日期和结束日期,计算工期 注:需要自己做界面维护工作日表(s_WorkDay)和节假日表(s_SpecialDay) 涉及到的数据表 ...

  2. POJ 3220 Jessica's Reading Problem

    Jessica's Reading Problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12944   Accep ...

  3. Redux简易理解

    1. createStore(相当于vuex的$store) 这才是数据存储仓库,用来存储初和输出的数据,更vuex$store功能一样 作用:  创建一个 Redux store 来以存放应用中所有 ...

  4. 关于Webpack详述系列文章 (第四篇)

    1. webpack基本概念 Entry:入口,Webpack 执行构建的第一步将从 Entry 开始,可抽象成输入.Module:模块,在 Webpack 里一切皆模块,一个模块对应着一个文件.We ...

  5. 11. Linux——LCD驱动程序

    由上一节 得出写个LCD驱动入口函数,需要以下4步: 1) 分配一个fb_info结构体: framebuffer_alloc(); 2) 设置fb_info 3) 设置硬件相关的操作 4) 使能LC ...

  6. SpringCloud核心教程 | 第二篇: 使用Intellij中的maven来快速构建Spring Cloud工程

    spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环 ...

  7. cocos2d-x嵌入移动MM短代支付IAP2.4的SDK,点击支付崩溃的解决的方法

    凡是用IAP2.4,调用purchase.order 游戏崩溃.logcat报错是: 06-16 18:43:42.944: E/AndroidRuntime(8526): FATAL EXCEPTI ...

  8. RocketMQ集群消费的那些事

    说明 RocketMQ集群消费的时候,我们经常看到类似注释里面 (1,(2 的写法,已经有时候有同学没注意抛异常的情况就是(3 模拟的情况.那么这3种情况到底是怎么样的呢?你是否都了然于心呢?下面我们 ...

  9. 学习笔记(二):javascript之dom操作

    一.document.getElementById()    根据Id获取元素节点 <div id="div1"> <p id="p1"> ...

  10. 【2017 Multi-University Training Contest - Team 7 && hdu 6121】Build a tree

    [链接]点击打开链接 [题意] 询问n个点的完全k叉树,所有子树节点个数的异或总和为多少. [题解] 考虑如下的一棵k=3叉树,假设这棵树恰好有n个节点. 因为满的k叉树,第i层的节点个数为k^(i- ...