基础


目录:

  • 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. python 单元测试中处理用例失败的情况

    今天有一个需求, 在单元测试失败的时候打印一些日志, 我们管他叫 dosomething 吧 ,反正就是做一些操作 查了下并没有查到相关的方法, 于是研究了一波unittest 的源码 发现了这个东西 ...

  2. / Vijos / 题库 / 1622 / 文件查找(HOI)

    / Vijos / 题库 /1622/文件查找(HOI) 描述 WINDOWS是一个很庞大的操作系统(当然啦,看占的硬盘空间就知道了),比如说,它的文件查找系统.现在,请你用PASCAL或者C或者C+ ...

  3. 【Android】一个好用的sharedpreferences存储类方法

    其实我也不知道sharedpreferences究竟安全不安全,毕竟是android中最简单的存储机制. 如果你手机root了的话,使用MT管理器到data/data/包名/shared_prefs下 ...

  4. 解决Scrapy抓取中文网页保存为json文件时中文不显示而是显示unicode的问题

    注意:此方法跟之前保存成json文件的写法有少许不同之处,注意区分 情境再现: 使用scrapy抓取中文网页,得到的数据类型是unicode,在控制台输出的话也是显示unicode,如下所示 {'au ...

  5. 优化yum下载安装慢,不断换mirror

    不停地换mirror,为了解决这个问题,在网上搜了好多资料,总结出一个基于aliyun的mirror源 先检查:是否能正常上网,DNS是否正常,网关gw是否正常,若通过ping 不正常,则解决好网络, ...

  6. python爬虫17 | 听说你又被封 ip 了,你要学会伪装好自己,这次说说伪装你的头部

    这两天 有小伙伴问小帅b 为什么我爬取 xx 网站的时候 不返回给我数据 而且还甩一句话给我 “系统检测到您频繁访问,请稍后再来” 小帅b看了一下他的代码 ): requests.get(url) 瞬 ...

  7. 腾讯云&搭建微信小程序服务

    准备域名和证书 任务时间:20min ~ 40min 小程序后台服务需要通过 HTTPS 访问,在实验开始之前,我们要准备域名和 SSL 证书. 域名注册 如果您还没有域名,可以在腾讯云上选购,过程可 ...

  8. mybatis源码阅读-MappedStatement各个属性解析过程(八)

    调用方 类org.apache.ibatis.builder.xml.XMLMapperBuilder private void configurationElement(XNode context) ...

  9. 洛谷 1373 dp 小a和uim之大逃离 良心题解

    洛谷 1373 dp 这题还不算太难,,当初看的时候不是很理解题意,以为他们会选择两条不同的路径,导致整体思路混乱 传送门 其实理解题意和思路之后还是敲了不短的时间,一部分身体原因再加上中午休息不太好 ...

  10. CF410div2 D. Mike and distribution

    /* CF410div2 D. Mike and distribution http://codeforces.com/contest/798/problem/D 构造 题意:给出两个数列a,b,求选 ...