一、工作流
本地仓库的git维护由三个状态
二、基本命令
1、创建新仓库
创建新的文件夹,打开,然后执行 git init 以创建新的仓库。
此命令初始化一个新本地仓库,它在工作目录下生成一个.git隐藏文件夹。
git init git-demo-A 初始化一个A仓库
config//文件- 包含一些配置选项
objects//目录- 存储所有Git的数据对象
HEAD//文件- 指定当前分支
info //目录- 存放项目信息,默认包含一个全局exclude文件, 用来放置不希望记录在.gitignore 中的忽略模式
description//文件- 仅供GitWeb 程序使用
hooks //目录- 存放可在某些指令前后触发运行的钩子脚本(hook scripts),默认包含一些脚本样例
refs//目录- 存储各个分支指向的目标提交
branches //目录- 还没发现有什么用处
其中有四个条目很重要:HEAD 文件、(尚未创建的)index 文件,和 objects 目录、refs 目录。这些条目是Git 的核心组成部分。
2、检出仓库
从远端检出:git clone ssh://……或者http://
创建一个本地仓库的克隆版本:git clone /path/to/repository
3、添加/更改 文件到暂存区
git add <filename>
4、实际提交改动
git commit -m “提交代码。。。”
现在你代码的改动已经提交到了HEAD,但是还没有提交的远端仓库。
5、推送改动到远端
git push origin master 可以把 master换成你想推送的任何分支。
三、分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。
在其他分支上进行开发,完成后再将它们合并到主分支上。
创建一个feature_x 的分支,并切换过去:git checkout -b feature_x
切换回主分支:git checkout master
再把新建的分支删掉:git branch -d feature_x
除非你将分支推送到远端仓库,不然该分支就是不为他人所见的:git push origin <branch>
四、更新与合并
要更新你本地仓库至最新改动,执行:git pull
以你的工作目录中 获取(fetch)并合并(merge)远端的改动。
要合并其他分支到到你当前分支(如master),执行:git merge <branch>
在这两种情况下,git都会尝试去自动合并改动。但是并非每次都成功,可能会出现冲突(conflicts)。
这时候需要修改这些文件,手动合并这些冲突。改完之后,你要再次执行:git add <filename>
在合并改动之前,可以使用以下命令预览差异:git diff <source_branch> <target_branch>
五、替换本地改动
假如你操作失误,可以用远端替换掉本地改动:git checkout --<filename>
此命令会使用HEAD中最新内容替换掉你工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。
假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin
git reset --hard origin/master
开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支
- git checkout dev
- git pull
- git checkout master
- git merge dev
- git push -u origin master
当master代码改动了,需要更新开发分支(dev)上的代码
- git checkout master
- git pull
- git checkout dev
- git merge master
- git push -u origin dev