基础


目录:

  • working driectory  工作目录,就是我们的工作目录,其中包括未跟踪文件及暂存区和仓库目录。
  • staging area    暂存区,不对应一个具体目录,其实只是git directory中的一个特殊文件。
  • git directory          仓库目录,就是.git目录,里面保存了所有的版本信息等内容。

文件状态:

  • untracked 未跟踪  : 只有处于已跟踪状态的文件才被纳入GIT的版本控制.
  • modified 已修改:已修改表示修改了文件,但还没保存到暂存区中。
  • staged 已暂存 : 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • committed 已提交:表示数据已保存在仓库目录中。

基本的 Git 工作流程如下:

  • 在工作目录中修改文件。  
  • 暂存文件,将文件的快照放入暂存区域。
  • 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

示例


1,配置git

  • 配置提交的用户名,提交时注释的文本工具等,下面是对当前用户配置的命令

    $ git config --global user.name "John Doe"
    $ git config --global user.email johndoe@example.com
    $ git config --global core.editor emacs
    $ git config --global core.editor "'C:/Program Files/Sublime Text/sublime_text.exe' -w" ## windows下配置编辑器sublime()
    $ git config --list                                          ## 检查配置信息
    $ git config username                                        ## 检查git某一项配置

    /etc/gitconfig 对本机所有用户,~/.gitconfig 对当前用户 ,<project>/.git/config 对当前工程。

  • 配置 .gitignore 文件

  在项目的根目录下,与.git目录同级。

  GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表,你可以在 https://github.com/github/gitignore 找到它.

2,生成git仓库,有两个方式

在源码根目录

$ git init

克隆已有的仓库

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

本例子克隆远程把仓库同时把仓库根目录命名为 mylibgit,命名这步是可选的。

3,在本地操作文件

将文件添加到暂存区,准备提交

$ git add README

将一个文件从git跟踪列表移除,如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

$ git rm PROJECTS.md

 相关的还有: $ git rm --cached README  $ git rm log/\*.log  $ git rm \*~

重命名或移动文件

$ git mv README.md README

4,在本地提交

  -a 表示把所有修改过添加到已暂存中,-m 是提交的注释信息

$ git commit -a -m "Story 182: Fix benchmarks for speed"

5,查看历史记录

  以一行的形式显示

$ git log --pretty=oneline

6,撤消某些操作(amend,reset,checkout)

修改最近一个提交,包括提交的注释,提交的文件等一系列操作。注意此命令前的若干条命令都被视作对上一次commit的修改。

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

把一个文件重置,取消暂存态

$ git reset HEAD CONTRIBUTING.md

把一个文件恢复到上一次提交时的样子  

$ git checkout -- CONTRIBUTING.md

7,提交到远程服务器(remote,pull,push)

查看远程仓库

$ git remote -v

查看详细信息(origin)是仓库名,通常提交前应先看下。

$ git remote show origin

添加一个新的远程 Git 仓库,同时指定一个你可以轻松引用的别名 以后就可以把pb 当 https://github.com/paulboone/ticgit

$ git remote add pb https://github.com/paulboone/ticgit

从远程仓库中抓取你还没有的数据,它并不会自动合并或修改你当前的工作。

$ git fetch pb

运行 git pull 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。

$ git pull pb

把文件推到远程服务器, 只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效,当你和其他人在同一时间克隆,

他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。

注意,push前一定要先pull

$ git push origin master

远程仓库的重命名,把pb改为paul

$ git remote rename pb paul

远程仓库的删除

$ git remote rm paul

删除远程的文件,有时误把项目编译的临时文件上传到远程,这时可以删除它们

git rm -rf bin/ gen/ 

之后执行git commit, git push 就可。

Git教程(3)git工作区与文件状态及简单示例的更多相关文章

  1. Git使用手册/Git教程:git fetch 将远程仓库的分支及分支最新版本代码拉取到本地

    相关文章: 关于验证是否存在ssh配置以及生成SSH Key的方法可以参照文章:Git使用手册:生成SSH Key 关于SSH Key的使用和公钥在gitHub.gitLab的配置等,请参考文章:Gi ...

  2. 掌握Git撤销操作,随心所欲控制文件状态

    本文主要讨论和撤销有关的 git 操作.目的是让读者在遇到关于撤销问题时能够方便迅速对照执行解决问题,而不用去翻阅参数繁多的 git 使用说明. 一开始你只需了解大致功能即可,不必记住所有命令和具体参 ...

  3. git 教程2 (git常用命令解说)

    <1>$ git -- help (调出git的帮助文档) <2>$ git +命令 --help (查看某个具体命令的帮助文档) <3>$ git --versi ...

  4. 廖老师git教程执行"git checkout -b dev origin/dev"命令报出:fatal: Cannot update paths and switch to branch 'dev' at the same time. Did you intend to checkout 'origin/dev' which can not be resolved as commit?问题解决

    在学习廖老师git教程之多人协作模块时按照老师的操作先创建了另一个目录,然后在这个目录下从GitHub上clone了 learngit目录到这个目录下,同样的执行了git branch查看分支情况,确 ...

  5. Spring MVC 文件上传简单示例(form、ajax方式 )

    1.Form Upload SpringMVC 中,文件的上传是通过 MultipartResolver 实现的,所以要实现上传,只要注册相应的 MultipartResolver 即可. Multi ...

  6. git教程2-删除修改和文件

    文件处于三种状态: 1.位于工作区,未修改状态: 2.位于工作区,已经修改状态: 3.位于暂存区,已经暂存但未commit. 4.已经commit. 一.文件删除修改: 1.已经修改,但未add: g ...

  7. git 教程(8)--删除文件

    在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt到Git并且提交:

  8. 【Git教程】Git教程及使用命令

      Git是目前世界上最先进的分布式版本控制系统,可以自动记录和管理文件的改动,还可以团队写作编辑,也就是帮助我们对不同的版本进行控制.2008年,GitHub网站上线,为开源项目提供免费存储,迅速发 ...

  9. 【Git教程】Git教程之分支管理

      在前一篇文章中,主要针对Git本地仓库和远程仓库的基本操作命令进行了简要介绍,本文主要集中介绍Git的另一个主要的特点:分支管理和多人协作. 什么是分支管理   当一个任务需要多人协作完成时,每个 ...

随机推荐

  1. vue学习笔记(六)— 关于Vuex可以这样简单理解

    关于Vuex可以这样简单理解 作者:狐狸家的鱼 本文链接:关于Vuex GitHub:sueRimn 概念理解 和大多数文章都一样,从概念解释到引出问题再举例解决问题. 官网中,Vuex是状态管理模式 ...

  2. c# winform中使用WebKit实现网页与winform的交互

    1.工作 一年多了,一直没对自己在工作遇到的问题进行总结,每次遇到问题都要在网上找资料,导致完成项目之后,时间久了就会生疏.所以下定 决定总结自己在工作中遇到的各种问题. 进入正题:第一次写还请大神多 ...

  3. [系统资源攻略]CPU

    linux系统中如何查看cpu信息? 查看linux版本.cpu.位数.内核.内存等信息 linux下查看CPU,内存,机器型号,网卡等信息的方法 查看服务器物理CPU数和CPU核数方法介绍 可以用/ ...

  4. C++中的各种进制转换函数汇总及学习

    一.指定格式输出 1.C中指定格式输出 printf(); //按八进制格式输出,保留5位高位补零 printf(); //按十进制格式输出,保留3位高位补零 printf(); //按十六进制格式输 ...

  5. 让TP5.0在SWOOLE上飞起来

    TP-SWOOLE 目前,TP5.1官方已经提供了think-swoole2.0,集成程度以前优雅很多,不过5.0的集成方式确实有些鸡肋.所以看了下2.0,为5.0开发了一个扩展包,可以采用compo ...

  6. ubuntu下Apache2配置

    Ubuntu下Apache2的CGI简单配置:http://blog.csdn.net/a623891391/article/details/47170355 Ubuntu Apache的安装和配置以 ...

  7. SVN学习总结(3)——分支合并

    首先在主干trunck上,创建分支branch1.0.0,如下图: 从主干切换到branch1.0.0,在branch1.0.0中添加test.java文件, 分支与主干的合并,首先应将主干trunc ...

  8. Maven学习总结(十一)——Maven项目对象模型pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  9. c++ primer 第三章 标准库类型

    1. string 标准库 1.1初始化 string s1; 默认构造函数s1为空 string s2(s1); 将s2初始化为s1的一个副本 string s3("value" ...

  10. [bzoj1455]罗马游戏_左偏树_并查集

    罗马游戏 bzoj-1455 题目大意:给你n个人,2种操作,m次操作:1.将i号士兵所在的集合的最小值删除 2.合并i和j两个士兵所在的团体 注释:$1\le n\le 10^6$,$1\le m ...