git是什么?
Git 更像是把数据看作是对小型文件系统的一系列快照。 在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。
获取 Git 仓库
Git 克隆的是该 Git 仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。 当你执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。事实上,如果你的服务器的磁盘坏掉了,你通常可以使用任何一个克隆下来的用户端来重建服务器上的仓库 (虽然可能会丢失某些服务器端的钩子(hook)设置,但是所有版本的数据仍在,
记录每次更新到仓库
你工作目录下的每一个文件都不外乎这两种状态:××已跟踪:×× 或 ××未跟踪××
已跟踪:是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后, 它们的状态可能是未修改,已修改或已放入暂存区。简而言之,已跟踪的文件就是 Git 已经知道的文件。
为跟踪
为跟踪:工作目录中除已跟踪文件外的其它所有文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有被放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态,因为 Git 刚刚检出了它们, 而你尚未编辑过它们。
git操作
下拉仓库
1 | git clone xxx --recursive |
submodule更新:
1 | git submodule update --init -- |
创建分支
###查看分支信息
1 | git branch -a |
切换到 dev 分支
1 | git checkout dev |
更新 dev 分支到最新
1 | git fetch |
创建自己的分支,分支名的命名规范是:[NAME]/[BRANCH_SUMMARY]
1 | git checkout -b zhangsan/add_new_feature |
将自己的分支推到远端
1 | git push origin zhangsan/add_new_feature |
设置自己本地分支追踪的远程分支
1 | git branch -u origin/zhangsan/add_new_feature |
提交的流程
首先先看当前的状态,通常是status命令,diff可以看具体修改了什么地方
1 | git status/git status -s/git diff |
之后跟踪新文件或修改, 通常使用git add .来跟踪当前目录下的所有修改
1 | git add xxx/git add . |
提交更新
1 | git commit -m "xxx" |
提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么,以及在本次提交中,有多少文件修订过,多少行添加和删改过。
推送到远端
git push origin “branch name”
远程库覆盖本地代码
git fetch --all
git reset --hard origin/develop
git pull
撤销本地操作
git checkout .
删除远程分支
git push origin --delete branch