初识Git
Git与SVN的差异:
SVN 之类的版本控制系统将它们保存的信息看作是一组基本文件和每个文件随时间累积的差异。每个版本之间记录着与前一版本的差异。
Git 则是将数据看成一组快照,每次提交都会制作全部文件的快照,并保存快照的索引。对于没有修改的文件,则保留一个链接指向前一版本保存的文件。且Git大部分操作都是在本地完成的,本地拥有项目的完整历史。
Git的三种状态
已提交(commited)、已修改(modified)、已暂存(staged)
已提交:表示数据已经安全进入本地数据库。
已修改:表示已经修改文件,但是还没有保存到数据库。
已暂存:表示已经对此次修改的版本做了标记,将包含在下次提交的快照中。
Git的三个工作区域:
工作目录、暂存区域、Git仓库
工作目录:即当前使用进行项目修改的区域。
暂存区域:实际是一个文件,记录了下次提交文件列表信息。有时候也称作索引。
Git仓库:是用来保存项目的元数据和对象数据库的地方。
Git基本工作流程:
- 在工作目录中修改。
- 暂存文件,将文件快照放进暂存区域。
- 提交更新,找到暂存区域的文件,将快照永久性的存储到Git仓库目录中。
Git的基本操作
git init: 现有目录中初始化仓库。
git add: 可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。
git commit: 提交。
git clone [url]: 克隆现有的仓库。
git status: 查看当前文件状态。
Changes to be committed -- 说明文件处于已暂存状态。
Changes not staged for commit -- 说明已跟踪的文件内容发生变化,但还没放入暂存区。
git diff: 工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存的内容。
git diff --cached: 暂存区与Git仓库之间的差异,查看已暂存的将要添加到下次提交里的内容。
git diff HEAD: 显示工作目录和Git仓库的差异。
git rm: Git移除文件,先从暂存区移除,然后提交。 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。
git mv: 移动文件或者对文件改名。
git log: 查看文件提交历史。
git reset HEAD
git checkout -- [file]: 还原成上次提交的样子,所做的修改都会丢失。
git remote (-v): 查看远程仓库。
git fetch [remote-name]: 抓取远程仓库的数据(它并不会自动合并或修改你当前的工作,需要手动修改)。
git pull: 命自动的抓取然后合并远程分支到当前分支。
git push [remote-name] [branch-name]: 推送到远程仓库。
git remote rename: 远程仓库的重命名。
git remote rm: 远程仓库的移除。
git tag: 打标签。
git checkout -b [branchname] [tagname]: 检出标签。