Git学习文档
Git 文档
一,初始化
二,初始化之后文件夹会新增一个文件夹 .git
.git目录的查找原理:当在Git 工作区的某个子目录下执行操作的时候,会在工作区目录中依次向上递归查找 .git 目录,找到的.git目录就是工作区对应的版本库,.git目录所对应的目录就是工作区的根目录
三,git config命令的三种级别:
--amend 是对刚刚的提交进行修补,不会产生新的提交
--allow-empty 使得空白提交被允许
--reset-author 将Author的ID同步修改
设置别名:
git config --global 本用户
git config --system 本系统
git config --local 本项目
Git暂存区
(1)修改后的文件可以直接提交吗???
但是不建议这样去使用,因为git 暂存区的设计是git的精华。 日志举例
涉及到一个我改动后不想改的操作。
工作区 缓存区(暂存区) 本地仓库
git diff 比较的是工作区和暂存区
git diff HEAD 比较的是工作区与HEAD
git diff --cached 比较的是暂存区和HEAD
HEAD
暂存区
工作区
比较的是工作区和暂存区
比较的是暂存区和HEAD
比较的是工作区与HEAD
如果功能开发一部分后,领导又不想要了怎么办???
(1)未加入缓存区,就是还没有使用git add命令
git checkout . 或者 git checkout 文件名
(2)加入了缓存区
使用git reset 命令
(3)我已经commit 到本地仓库了怎么办??? ---穿越时空,改变历史
A, git checkout
B, git branch 创建分支
C, git merge 分支合并(注意容易出现冲突)
成功后
分支:
现实场景:我们在dev环境下开发,然后线上代码出现了问题,需要切换到master环境进行修改,但是我在dev环境下的代码由于还没有开发完成,不能提交到本地仓库。
使用git stash
切换之后发现文件中没有之前的内容了。。。。
使用 git statsh pop 命令恢复。
Git 标签
git tag -a v1.4 -m 'my version 1.4'
git与svn的区别:http://www.jianshu.com/p/bfec042349ca
每一个开发人员的电脑上都有一个Local Repository,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项 目分支等操作,等网络再次连接上Push到Server端。
在SVN,当你提交你的完成品时,它将直接记录到*版本库。当你发现你的完成品存在严重问题时,你已经无法阻止事情的发生了。如果网路中断,你根本没办法提交!而Git的提交完全属於本地版本库的活动。而你只需“推”(git push)到主要版本库即可。Git的“推”其实是在执行“同步”(Sync)。
区别还有很多,但是分布式和集中式是最主要的。。
关于git stash
https://gist.github.com/subchen/3409a16cb46327ca7691