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. 深入了解Linux远程桌面

    本文转载于:http://www.linux521.com/2009/system/201004/11001.html 已发表在<网管员世界>2010年3月杂志             本 ...

  2. Java学习笔记二.1

    和其他高级语言类似,Java也具有以下部分 1.关键字:见下表,注意Java严格区分大小写,关键字都是小写 2.标识符:见下图 3.注释.有两种://(单行注释)和/**/(多行注释).还有一种文档注 ...

  3. ubuntu搭建交叉编译环境makeinfo: command not found

    解决办法:sudo apt-get install texinfo

  4. SSO单点登录学习总结(3)—— 基于CAS实现单点登录实例

    第一: 本demo在一个机器上实现(三个虚拟主机),来看SSO单点登录实例(我们可以布到多个机器上使用都是同一个道理的),一个服务器主机,和两个客户端虚拟主机 [html] view plaincop ...

  5. Spark源代码分析之中的一个:Job提交执行总流程概述

    Spark是一个基于内存的分布式计算框架.执行在其上的应用程序,依照Action被划分为一个个Job.而Job提交执行的总流程.大致分为两个阶段: 1.Stage划分与提交 (1)Job依照RDD之间 ...

  6. 单元测试Assert类

    Assert类主要的静态成员 1. AreEqual:方法被重载了N多次,主要功能是判断两个值是否相等:如果两个值不相等,则测试失败. 2. AreNotEqual:方法被重载了N多次,主要功能是判断 ...

  7. Beginning iOS Programming

    Beginning iOS Programming 2014年 published by Wrox

  8. elasticsearch节点间通信的基础transport

    在前一篇中我们分析了cluster的一些元素.接下来的章节会对cluster的运作机制做详细分析.本节先分析一些transport,它是cluster间通信的基础.它有两种实现,一种是基于netty实 ...

  9. (JavaScript基础向)sort()方法里的排序函数的理解

    比较常见的解释可以看这里:js的sort()方法,这篇博客写得挺好的,一般的应用的理解已经足够了. 但是如果要活用sort()方法里面的参数——也就是排序函数的话,可能就比较难理解了. 然后我就总结出 ...

  10. 高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离

    实战操作可参考:http://www.roncoo.com/course/view/3117ffd4c74b4a51a998f9276740dcfb 一.环境 操作系统:CentOS-6.6-x86_ ...