基础


目录:

  • 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. LINUX -- pthread_detach()与pthread_join()

    pthread_detach()即主线程与子线程分离,子线程结束后,资源自动回收. int pthread_join(pthread_t tid, void **thread_return); {su ...

  2. SqlServer大数据的分区方案

    这里介绍的是大数据量的维护日志的分区解决方案: 每个月1张数据表,1个分组文件.31个分区(按每天1个分区).... 为了日后维护方便,直接删除旧的日志数据文件就可以,而不需要去做分区压缩. --用的 ...

  3. Scrapy实战:使用scrapy再再次爬取干货集中营的妹子图片

    需要学习的知识: 1.获取到的json数据如何处理 2.保存到json文件 3.保存到MongoDB数据库 4.下载项目图片(含缩略图) 1.创建项目 scrapy startproject gank ...

  4. jdk8--collect总结

    https://blog.csdn.net/u014351782/article/details/53818430 一,collect是一个终端操作,它接收的参数是将流中的元素累积到汇总结果的各种方式 ...

  5. 使用androidstudio 分析内存泄漏

    分析内存泄漏 http://www.jianshu.com/p/c49f778e7acf

  6. Django——8 关系表的数据操作 表关联对象的访问 多表查询

    Django 关系表中的数据操作 表关联对象的访问 关联对象的add方法 create方法 remove方法 clear方法 多表查询 查询补充 聚合查询 分组查询 F查询 Q查询 关系表的数据操作 ...

  7. Win8.1 Hyper-V 共享本机IP上网

    公司的Win8.1自带了Hyper v,可是死活连接不到网络. 原因是公司只给每人分配一个局域网IP,而默认情况下Hyper-V的虚拟机会动态分配了一个没有经过MIS人员许可的IP…… 百度了N久解决 ...

  8. github的submodel错误

    原文地址 简要:直接把github上的仓库删除重建,本地的仓库也删除重建,再重新上传就OK了 最近想整理一下工作室官网的东西,那是一个用github pages写的网站,在上传一些post文章的时候, ...

  9. 每一个程序猿必知之SEO

    似乎由于受这篇文章的影响 http://katemats.com/what-every-programmer-should-know-about-seo/ 于是我也觉得我应该写一个每一个程序猿必知之S ...

  10. Oracle批量恢复drop操作删除的表、索引等对象

    /**********************************************************************查询Drop操作删除的对象select * from re ...