git 笔记
来源:互联网 发布:怎样才能加入淘宝客 编辑:程序博客网 时间:2024/05/21 22:35
本文是通过学习《Pro Git》--作者Scott Chacon 后所做的整理和思考笔记。
一.GIT管理下的文件周期1.新添加的文件或文件夹是untracked状态,意思是git的版本管理里没有这个文件。
注1:新添了文件,untracked的状态:
注2:用git add <文件名>将文件加入git管理后,文件是tracked下的staged状态
2.在git的管理下的状态是tracked状态,包括unmodified,modified和staged三种状态。
3.unmodified状态指本地的文件与版本库里该文件最近一次的提交是一致的。
4.一旦修改了文件,文件内容与版本库里该文件最近一次的提交内容不一致,状态便变成modified。此时可以用gitadd <文件> 来stage文件。
stage之后的文件可以用git commit <文件>来提交文件或 git reset HEAD <文件>来取消stage状态。
用gitstatus可以查看到文件的当前状态,如果要查看当前文件到底有多少内容没stage的或者stage的文件跟本地版本库最近一次提交的差异,可以用gitdiff来看 查看文件与stage的差异。比如已经stage了一个文件,然后又修改了它。用gitdiff可以查看到修改的内容部分。如果一个文件已经stage,之后并无修改,那么git diff的结果是没有任何差异。 查看stage文件与版本库最近一次提交的差异。
5.当一个文件已经stage后,如果再做修改,此时的状态是部分stage,部分modified。如果commit的话,会提交已经stage的那部分。
6.gitadd有多种功能,可以将untracked的文件track,可以将modified的文件stage,还可以将merge时conflict后来修改好的文件再次stage。
问题:为什么要有一个stage的状态?修改了文件要stage再commit不是很麻烦吗?
我的答案:commit是一次对所有stage过的文件的提交,没有针对某一个文件的commit。
一般说来,一次commit是完成一个版本的snapshot,可以修改一个文件就stage,也可以修改完了很多文件一起stage。stage就像一个箱子,把要commit的内容都装上去。然后对装箱的内容做commit操作。
如果修改好的文件可以直接提交,可以用git commit -a来自动stage,即对全部修改自动装箱提交。
二. 同一个文件的差异查看
1. git diff
2. git diff -cache(或者git version 1.6.1之后用git diff --staged)
问题:如何查看版本库里不同版本之间的差异?
答案:用git log.比如可以用git log -p -2来查看最近两个版本之间的内容差异。详见下面四.查看版本。
三.删除和过滤文件
1.从版本库上删除文件,本地也不保留该文件
2.从版本库上删除文件,但本地保留
3.版本库上没有该文件,但本地保留
做法是: 在.gitignore文件里添加想要不被track的文件。
四.查看版本
【使用范例】:
先用git log --abbrev-commit--pretty=oneline来显示所有的commit,每个commit显示为一行,用的是shot SHA-1.
再用git show<SHA>来查看你关心的那个commit。
五.回滚操作
问题:如何回滚版本库里的文件?
网上参考答案:
------------------------------------------BEGIN---------------------------------------------------
git reset是指将当前head的内容重置,不会留log信息。
- git reset HEAD filename
从暂存区中移除文件 - git reset –hard HEAD~3
会将最新的3次提交全部重置,就像没有提交过一样。 - git reset –hard
commit (38679ed709fd0a3767b79b93 d0fba5bb8dd235f8)回退到 38679ed709fd0a3767b79b93 d0fba5bb8dd235f8 版本
根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:
- git reset –mixed:此为默认方式,不带任何参数的gitreset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
- git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到indexfile一级。如果还要提交,直接commit即可
- git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
--------------------------------------------END---------------------------------------------------
六.远程版本库
当远程版本库有分支时,你可以选择添加某一个分支
git remote add <别名><分支URL>
例如 git add pb git://github.com/paulbone/ticgit.git
现在再git remote-v就可以看到origin和pb两个branch了,其中origin是default的。
六.分支的建立与rebase
七.远程分支
- Git -> git log笔记
- Git 笔记 git add
- Git 笔记, git commit
- 【git】git学习笔记
- git笔记
- git笔记
- git笔记
- git笔记
- git笔记
- git 笔记
- git笔记
- git 笔记
- git笔记
- Git 笔记
- GIT笔记
- Git笔记
- Git笔记
- [笔记]Git
- 重定向标准输出错误输出到编辑控件中!
- 黑马程序员--解析XML的几种方法
- DM9000驱动理解三(中断函数)
- JPEG编解码过程详解
- 设计模式之装饰者模式
- git 笔记
- iphone开发基础
- exit abort return 区别
- Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月1日-1月6日)
- 做好一个面试官,是给公司领导分忧的一项重要技能。
- android 创建私钥 为apk签名
- 读《黑客与画家》
- 我们在囧途之技术管理者篇
- java中的“&”、“|”和“^”、“~”运算符