git中working tree, index, commit】的更多相关文章

这三个名字可以简单理解为文件在本地仓库存在的三种不同的位置. 如下,是做commit提交两段提交过程,工作区(working tree),暂存区(index)和 branch(commit). working tree:就是你所工作在的目录,每当你在代码中进行了修改,working tree的状态就改变了. index file:是索引文件,它是连接working tree和commit的桥梁,每当我们使用git-add命令来登记后,index file的内容就改变了,此时index file就…
Please enter a commit message to explain why this merge is necessary. 请输入提交消息来解释为什么这种合并是必要的 git 在pull或者合并分支的时候有时会遇到这个界面.可以不管(直接下面3,4步),如果要输入解释的话就需要: 1.按键盘字母 i 进入insert模式 2.修改最上面那行黄色合并信息,可以不修改 3.按键盘左上角"Esc" 4.输入":wq",注意是冒号+wq,按回车键即可…
“xml文件存储数据”提交被我误操作,即使用reset  --hard删除了,然后又进行了三次提交,发现删除的提交有用,需要找回来, 于是找了好久,找到好方法: 1.进入工程下的.git文件下,git reflog命令 2.使用命令git branch recover_branch 5b7cf2c(哈希码) 然后在新分支recover_branch中就有我删除的提交了,如下图 注意:reset hard还是谨慎操作…
今天在使用eclips git中的add to Index,发现其无效,具体如下 问题描述: 通过export导入一个git java项目 在java工程中新增一个类文件IndicatorCalcTest.java 在eclips中选择该文件,team->add to Index,操作后该文件未显示+号 问题定位: 直接通过命令行进入IndicatorCalcTest.java文件所在目录,命令执行git add IndicatorCalcTest.java,报如下错误 C:\Users\Adm…
崩溃的一天,打算提代码走人,结果切分支之后,commit丢了= =,找了三个多小时 接下来分享下如何找回丢失的commit的 打开项目所在位置,打开git bash,在gitBASH中输入 git fsck --lost-found | grep commit | awk '{print $3}' | xargs -I {} git log --pretty=format:"%h %cd" {} 可以查看到所有的commit信息,这样就可以按照时间确定自己的commit是哪个 在git…
有的时候我们一不小心就git commit -m ‘commit message info’解决办法,很简单,只需执行git reset HEAD~这条命令即可,即能保证你原本的修改还在,也能撤销本次提交失误. 这种撤销上一次提交是比较好的,如果是版本回退的话也能解决这个问题,但是版本回退只适合于你本次提交并没有改动什么或者改动不大的情况.如果你改动太多,版本回退意味着着你需要重新复制一遍,当然了,解决这种问题的办法有很多,分支开发的方式也能解决这种问题. 顺便补充到,如果git add 失误呢…
一.目录操作 1.cd 即change directory,改变目录,如 cd d:/www,切换到d盘的www目录. 2.cd .. cd+空格+两个点,回退到上一目录. 3.pwd 即 print working directory, 打印工作目录,显示当前所在路径. 4.ls 即list,列出当前列出当前目录中的文件(不包含隐藏文件),ls -a(包含隐藏文件),ll 更详细. 5.touch 新建一个文件,如 touch index.php. 6.mv 即move,移动文件. 7.rm…
在SVN中,提交记录是无法修改的.比如说,当我们提交了某次修改后,发现该次提交中有错误时,只能将将补丁再次提交一遍.这样,就存在两次提交记录,没有保证提交的原子性. 在GIT中,由于提交是在本地进行的,因此如果没有发布之前,是允许使用reset命令来撤销提交记录的,这个命令有如下三种使用方式: git reset -soft: 只撤销commit,保留working tree和index file. git reset -mixed: 撤销commit和index file,保留working…
图解git中的最常用命令 Git命令参考手册(文本版) git init                                                  # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx"                       # 配置用户名 git config --global user.email "xxx@xxx.com"              # 配置邮…
rebase失败后的恢复 记一次翻车现场 记一次翻车的现场,很早之前提的PR后面由于需求的变便去忙别的事情了,等到要做这个需求的我时候,发现已经 落后版本了,并且有很多文件的冲突,然后就用rebase去拉代码解决冲突,然后解完之后推代码,但是之后发现一 个文件在解决冲突的时候丢失了.这时候去查看git提交历史,发现rebase之后找不到这个文件了. 最后如何解决呢,要是把丢失的文件在写一遍,那就真的变成了一名咸鱼了.这时候我们就需要去弄明白rebase 的原理了. rebase的使用流程 reb…
Git 中回退有 reset 和 revert,这两个的区别就是是否保留更改记录 假设当前的提交情况是:A <- B <- C <- D <- HEAD,如下图: 当前是 D,希望回退到 A,那我们可以使用 reset 命令,reset 后再看 git log 就会发现:B <- C <- D 宛如没有出现过,这适用于想完全舍弃 A 之后的修改 但是如果我们想保留 B <- C <- D 的修改记录,可能这三个 commit 的功能只是暂时用不到,以后可能还…
本文参考于:http://www.zhanglian2010.cn/2014/07/git-pull-vs-fetch-and-merge/ 使用git fetch和git pull都可以更新远程仓库的代码到本地,但是它们之间还是有区别 git fetch git fetch origin master git log -p master..origin/master git merge origin/master 从远程的origin仓库的master主分支更新最新的版本到origin/mas…
基本的6个命令 常用的就下面6个命令,但是详细的可能有上百个命令. 还需要特别了解git的几个名词,workspace:工作区,Index/Stage:暂存区,Respository:本地仓库,Remote:远程仓库. 测试环境 vs2015 msysGit+TortoiseGit GitLab 添加到远端仓库 1,初始化一个git仓库 git命令: # 基于已有目录,在当前目录新建一个Git代码库[常用] $ git init # 新建一个目录,将其初始化为Git代码库,如: $ git in…
(暂存区 即Index In Git) commit 到 local respository的内容,不想push,则使用git reset 将文件状态回转到staged|modified|unstaged: git reset HEAD^   git reset --soft HEAD^git reset HEAD~3    (本地有3次commit未提交时用,也可以git reset HEAD^操作3次) 状态回转用git reset 被delete的内容没有push到远端仓,此时想恢复文件:…
深入了解git的checkout命令 检出命令(git checkout)是Git最常用的命令之一,同时也是一个很危险的命令. 因为这条命令会重写工作区.检出命令的用法如下: 用法一: git checkout [-q] [<commit>] [--] <path>... 用法二: git checkout [<branch>] 用法三: git checkout [-m] [[-b|--orphan] <new_branch>] [<start_po…
方便Eclipse用户使用Git把项目导入到osc@git中进行管理. Eclipse Git osc@git 一.原有项目:  项目名为TestGit 二.在osc@git上面创建一个新项目库. 填写个名字就行了,其他项根据自己的需要填写.点击“创建项目”后,稍等一会儿就会成功: 然后复制地址: 三.再到Eclipse中把需要导入到osc@git中的项目初始化本地库. 然后选择Git: 弹出对话框: 把 User or create respository in parent folder o…
下面以现实场景作为情境. 基础知识,理解git中的几个区域 本地代码已经add,未commit 修改本地工作目录中的readme.md,添加文字"第一次修改" 然后查看下状态 ➜ experimentation git:(master) ✗ git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git ad…
[转载出处注明:http://www.zhangxiaofu.cn/java/commonTools/2015/0607/764.html] 一.原有项目:  项目名为TestGit 二.在osc@git上面创建一个新项目库. 填写个名字就行了,其他项根据自己的需要填写.点击“创建项目”后,稍等一会儿就会成功: 然后复制地址: 在上面的Commit message填写框中填写一些提交信息.然后点击下面的"Commit and Push"或者“Commit”按钮.点击完"Com…
(暂存区 即Index In Git) commit 到 local respository的内容,不想push,则使用git reset 将文件状态回转到staged|modified|unstaged: git reset HEAD^   git reset --soft HEAD^git reset HEAD~3    (本地有3次commit未提交时用,也可以git reset HEAD^操作3次) 状态回转用git reset,或者git revert https://www.cnbl…
git中常用的操作命令有哪些?本篇文章就给到大家归纳了一些git中常用操作命令.有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. git开始 全局配置:配置用户名和e-mail地址 1 2 $ git config --global user.name"Your Name" $ git config --global user.email"email@example.com" git init:初始化git仓库,目录下生成一个.git文件 1 git…
1.查看提交的历史版本(git log) 我们可以使用 git log 命令来查看提交的历史版本. 默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面.每个版本都有一个 SHA-1 校验和.作者的名字和电子邮件地址.提交时间,最后缩进一个段落显示提交说明. 1.1.展开显示每次提交的内容差异(git log -p) git log -p 命令将会列出每次提交时相对于上一版本的修改.用 -2 则只显示最近的两次更新 1.2.只显示每次提交的差异的简要信息(git…
1.创建仓库(git init .git clone URL) 有两种新建 Git 项目仓库的方法.第一种是在本地通过初始化来创建新的 Git 仓库.第二种是从已有的 Git 远程仓库中克隆出一个仓库. 1.1.通过初始化创建新仓库 要对现有的某个项目开始用 Git 管理,只需在该项目的根目录下,执行以下命令: $ git init Git 的大部分命令都需要在 Git 仓库的目录下(即项目的根目录下)运行,git init 是使用 Git 仓库的第一个命令.初始化后,在项目的根目录下会生成一个…
目录 1.用学过的命令进行文件重命名 2.使用git mv命令进行文件重命名 我们这篇文章来说说在Git中如何进行文件重命名. 提示一下,下面所说明的是对已经被Git管理的文件进行重命名,未被Git追踪的文件,直接修改文件名称就可以了. 1.用学过的命令进行文件重命名 (1)准备一个需要修改文件名的文件. # 1.准备一个干净的Git仓库 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On b…
目录 1.撤销操作说明 2.撤销工作区中文件的修改 3.撤销暂存区中文件的修改 4.总结 1.撤销操作说明 我们在使用Git版本管理时,往往需要撤销某些操作.比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到Git的撤销操作,因此撤销操作在平时使用中还是比较多的. 本文介绍几种,对于已修改过的文件,需要进行撤销操作,根据修改文件出现的位置,可以分为三种情况: 仅仅是工作区中内容进行了修改,还未添加到暂存区. 文件已经添加到暂存区,但是还未提交到本地版本库. 文件…
1.Git中有三种对象 commit 每执行一次git commit,git都会对当前工作目录的所有文件生成一次镜像,工作区下的目录对应的对象是tree,工作区下的文件对应的对象是blob,tree下面可以有blob,又可以有tree: tree tree表示每次提交对工作区下的目录生产的镜像: blob 每执行一次git add,git都会对新增或修改的文件在.git/objects下生成一个镜像文件,该文件就是一个blob: 2..git目录 ├─hooks ├─info ├─logs │…
目录 1.Git对象之间的关系 2.提交对象与分支的关系 (1)提交对象与分支的关系 (2)分支说明 (3)HEAD与分支的关系 1.Git对象之间的关系 我们之前学了Git的三个对象:提交对象.树对象.数据对象. 我们假设现在有一个工作目录,里面进行了三次提交,包括一次新增文件和两次对文件的修改. 每次一把工作区中的文件添加到暂存区时,暂存操作会为每一个文件计算校验和,然后会把当前版本的文件快照(即文件的内容)保存到 Git 仓库中 (Git 使用 blob 对象来保存它们),最后将校验和加入…
昨天写代码的时候,误删了一个文件.今天发现的时候,commit 已经 push 到版本库了.本想用 git reset 回退版本,找回文件后重新提交.但是想起 Git 是一个版本控制系统哎,直接从版本库里 checkout 出某个文件的历史版本不就好了? 想法挺好,但是很久没用这个功能,自己已经不记得具体的命令了.于是查了下手册,把和 checkout 历史版本有关的几个命令都记录一下. 从某个历史版本创建新的分支 在 Git 中从当前分支创建并检出新分支的命令是 git checkout -b…
在进行协作开发代码管理的过程中,常常会遇到某些临时文件.配置文件.或者生成文件等,这些文件由于不同的开发端会不一样,如果使用git add . 将所有文件纳入git库中,那么会出现频繁的改动和push,这样会引起开发上的不便. Git可以很方便的帮助我们解决这个问题,那就是建立项目文件过滤规则. git中提供两种过滤机制,一种是全局过滤机制,即对所有的git都适用:另一种是针对某个项目使用的过滤规则.个人倾向于第二种. 以我的一个项目为例,该项目用.net开发,.config文件.包括生成的bi…
在进行协作开发代码管理的过程中,常常会遇到某些临时文件.配置文件.或者生成文件等,这些文件由于不同的开发端会不一样,如果使用git add . 将所有文件纳入git库中,那么会出现频繁的改动和push,这样会引起开发上的不便. Git可以很方便的帮助我们解决这个问题,那就是建立项目文件过滤规则. git中提供两种过滤机制,一种是全局过滤机制,即对所有的git都适用:另一种是针对某个项目使用的过滤规则.个人倾向于第二种. 以我的一个项目为例,该项目用.net开发,.config文件.包括生成的bi…