基础


目录:

  • 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. openstack——neutron网络服务

    一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...

  2. 15.6.2【Task使用】 组合异步操作

    对于C# 5异步特性,我最喜欢的一点是它可以自然而然地组合在一起.这表现为两种不同的 方式.最明显的是,异步方法返回任务,并通常会调用其他返回任务的方法.这些方法可以是直 接的异步操作(如链的最底部) ...

  3. 《零压力学Python》 之 第二章知识点归纳

    第二章(数字)知识点归纳 要生成非常大的数字,最简单的办法是使用幂运算符,它由两个星号( ** )组成. 如: 在Python中,整数是绝对精确的,这意味着不管它多大,加上1后都将得到一个新的值.你将 ...

  4. linux学习7-数据流重定向

    数据流重定向 实验介绍 你可能对重定向这个概念感到些许陌生,但你应该在前面的课程中多次见过>或>>操作了,并知道他们分别是将标准输出导向一个文件或追加到一个文件中.这其实就是重定向, ...

  5. ReportNG 替换testng获得测试报告

    1.导入reportng相关jar包

  6. Drop all tables in MySQL database

    Drop all tables in MySQL database Answer: MySQL does not have a command for removing all database ta ...

  7. noip模拟赛 逃避

    题目描述 给定一篇只含有大小写字母,空格以及 ′.′(不含引号)的长度为 L 的文章.文章被若干个 ′.′ 划分 成若干个句子,句子被若干个空格划分成单词.你需要将文章中每个句子第一个单词的首字母改成 ...

  8. java.awt.headless 参数说明

    在使用Java处理图形应用时,经常有人推荐设置 -Djava.awt.headless=true,具体含义和效果查了一下,记录在这里分享 Headless模式是系统的一种配置模式.在该模式下,系统缺少 ...

  9. React Native Mac配置指南

    步骤 http://facebook.github.io/react-native/docs/getting-started.html#content 依照React Native官网步骤一步步安装, ...

  10. TCP学习(3)--TCP释放连接的过程(四次挥手)

    一.TCP释放连接的过程(四次挥手)    TCP释放连接的步骤例如以下图所看到的.    如今如果clientA和server端B都处于数据传送状态. TCP连接断开的过程例如以下: 1.clien ...