仓库
创建仓库
git init
git clone
工作流
你的本地仓库由 git 维护的三部分组成:
- 工作区(Working Directory)
就是你在电脑里能看到的目录,,它持有实际文件,比如我的learngit
文件夹就是一个工作区. - 暂存区 (index)
它像个缓存区域,临时保存你的改动. - HEAD
它指向你最后一次提交的结果.
Working Dir --add--> Index(Stage) --commit--> Head
版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage
(或者叫index
)的暂存区,还有我们创建的分支master
...,以及指向master
的一个指针叫HEAD
。
过程
- 添加
- 提交
- 推送
分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。
git branch -va
更新与合并
- 要更新你的本地仓库至最新改动
在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。
git pull
- 合并其他分支到你的当前分支(例如 master)
git merge <branch>
在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。
- sync a fork
git fetch upstream
git checkout master
git merge upstream/master
删除分支
git branch -d <branch>
标签
为软件发布创建标签是推荐的。
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。可以使用git log
命令获取提交ID,也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性。
替换本地改动,撤销修改
文件回到最近一次git commit或git add时的状态。
- git checkout -- file
此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。 - git reset HEAD file
假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin
git reset --hard origin/master