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下PortSentry的配置

    Linux下PortSentry的配置       前年写过<IDS与IPS功能分析>一文,受到广大读者关注,现将近期有关IDS配置的文章和大家分享.    Internet上的服务器一般 ...

  2. File Upload with Jersey

    package com.toic.rest; import java.io.File; import java.io.FileOutputStream; import java.io.IOExcept ...

  3. Rotation--控件位置旋转

    今天想要完成一个按钮的动画,也就是随着手势在屏幕上的滑动,让按钮图片跟着旋转.刚开始的思路是,先把图片旋转以后,在把这个图片设置为imagebutton的背景.不过,会发现这个图片经过处理以后一直变形 ...

  4. js遍历对象的属性和方法

    js遍历对象的属性和方法 一.总结 二.实例 练习1:具有默认值的构造函数 实例描述: 有时候在创建对象时候,我们希望某些属性具有默认值 案例思路: 在构造函数中判断参数值是否为undefined,如 ...

  5. 22. Spring Boot 动态数据源(多数据源自动切换)

    转自:https://blog.csdn.net/catoop/article/details/50575038

  6. 【习题 6-9 UVA - 127】"Accordian" Patience

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 链表模拟即可. 1pile不能加s... [代码] #include <bits/stdc++.h> using nam ...

  7. 深入并发AQS二

    AQS须要解决下面几个问题: 1.锁状态,怎样保证并发情况下可以安全的更新? 2.当前线程不能获取锁时,放在哪里? AQS是放在一个队列其中 3.怎样提高效率? AQS的主要职责是当获取不到锁时.将线 ...

  8. echarts+百度地图+vue 填坑记(一)(百度地图、鼠标移入移出标注,信息框会产生闪烁)

    大概七月底开始实习,到现在经历了两个完整的项目(c2b). 因为开发时间紧,任务重,所以在开发过程踩到的坑都没时间去记录. 现在在开发一个某链运输监控系统,到了收尾阶段,有时间写博客了!开心! 一.鼠 ...

  9. 【Codeforces Round #299 (Div. 2) D】Tavas and Malekas

    [链接] 我是链接,点我呀:) [题意] 给你n个位置,然后让你从某些位置开始的|p|个位置,填上p这个字符串. 问你填的时候是否会发生冲突->输出0 否则输出最终n个位置组成的可能的字符串的总 ...

  10. jQuery笔记---选择器

    查找API,jQuery选择器,定位标签 1.基本选择器 id定位标签 class属性定位标签 标签名定位标签 2.举例 <html> <head> <meta http ...