git 的介绍
git的3个程序:
- Git Bash:Unix与Linux风格的命令行,使用最多
- Git CMD:Windows风格的命令行
- Git GUI:图形界面的Git
Git的4个工作区:
3个本地工作区,分别是工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory) 和 1个远程仓库(Remote Directory)。文件在这四个区域之间的转换关系如下:
- Workspace:工作区,平时存放项目代码的地方
- Stage(Index):暂存区,用于临时存放改动后的文件
- Repository(History):本地仓库,这里有你提交的所有版本的数据,其中,HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器
本地的三个区域确切的说应该是git仓库中指向的版本:
- Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
- WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
- .git:存放Git管理信息的目录,初始化仓库的时候自动创建。
- Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
- Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
- Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
git工作流程:
- 在工作目录中添加、修改文件
- 将需要进行版本管理的文件放入暂存区域
- 将暂存区的文件提交到本地仓库。
- 提交本地仓库数据到远程仓库
Git项目搭建:
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库
本地仓库搭建:
- 创建全新的仓库,需要用Git管理的项目的根目录执行代码:git init
- 执行完后,仅仅在项目目录中多出一个.git目录,关于版本等所有信息都在这个目录里面。
- #注意,只有把隐藏文件打开,才能看到.git文件的
克隆远程仓库:
1、将远程服务器上的仓库克隆到本地的代码:git clone [url] # http://github.com/elunez/eladmin.git
Git文件操作
文件的4种状态
- Untracked:未跟踪
- Unmodefy:文件已经入库
- Unmodefy:文件已修改
- Staged:暂存状态
查看文件状态
- 查看指定文件状态:git status [filename]
- 查看所有文件状态:git status
添加所有文件到暂存区:git add .
提交暂存区中的内容到本地仓库:git commit -m "消息内容"
忽略文件
在主目录下创建“ .gitignore”文件,此文件有如下规则:
- 忽略文件中的空行或以井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问好(?)代表一个字符,方括号([])代表可选字符范围,大括号({string1,string2})代表可选的字符串。
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
1 #为注释 2 *.txt #忽略所有 .txt文件,这样的话上传就不会被选中! 3 !lib.txt #但 lib.txt 除外 4 /temp #仅忽略项目根目录下的temp ,不包括其他目录temp 5 build/ #忽略build/目录下的所有文件 6 doc/*/txt #会忽略doc/notes.txt ,但不包括doc/server/a.txt
git分支
如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码!
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
git分支中常用到指令
1 #列出所有本地分支 2 git branch 3 4 #列出所有远程分支 5 git branch -r 6 7 #新建一个分支,但依然停留在当前分支 8 git branch [branch-name] 9 10 #新建一个分支,并切换到该分支 11 git checkout -b [branch] 12 13 #合并指定分支到当前分支 14 git merge [branch] 15 16 #删除分支 17 git branch -d [branch -name] 18 19 #删除远程分支 20 git push origin --delete [branch-name] 21 git branch -dr [remote/branch]