1、Git 基本原理
首先需要知道的是Git本地仓库包括三个部分:工作区、暂存区(Stage)和版本库(History)
工作区就是我们电脑中的工作目录,也就是源码存储的文件夹;
暂存区可以暂时存储我们已经更新的部分,通过git add 命令就可以把工作区的内容存到暂存区中
版本库用于存放当前仓库的所有分支信息,并通过一个HEAD指针指向当前工作的分支,此外还以为注意到是版本依旧存在于本地,工作区中会有一个.git目录,里面存放的就是版本库数据(ps: 暂存区也在这个目录里哦,在这个目录的index文件夹中),通过git commit可以将暂存区的数据同步到版本库
那么本地仓库和远程仓库之间要怎么进行数据同步呢?
前面说到我们最后把数据同步到了本地的版本库里,那么要使得本地仓库和远程仓库同步就要使用到git push命令,该命令就就是将本地版本库的数据同步到远程仓库中;
同理,远程仓库可能每时每刻都在更新,为了让我们能尽量做到本地仓库和远程仓库同步,我们也要时常将远程仓库的数据同步到本地,这时候就需要使用git pull命令了,该命令可以同步当前远程仓库中的最新数据到本地仓库之中
由此实现本地仓库和远程仓库之间的数据同步!
2、开发中常用的git命令
作用 | 命令 | 详细解释 |
---|---|---|
创建git仓库 | git init | 在当前目录中创建一个git仓库 |
从远程clone仓库 | git clone [url/ssh] | 拷贝远程仓库的源码到本地在git clone报fatal: early EOF错误时,是因为远程仓库分支太多,可以分批下载,参照:解决方法 |
将数据同步到暂存区 | git add . | 将当前目录的所有文件添加到暂存区 |
比较工作区和暂存区 | git diff | 比较工作区和暂存区的差异 |
将数据同步到版本库 | git commit -m “xx” | 将暂存区的数据同步到版本库(本地仓库) |
提交代码 | git push | 将本地仓库的数据同步到远程仓库中 |
从远端获取代码库 | git fetch | 从远程仓库中获取最新的代码库 |
合并分支 | git merge xx | 合并分支,把当前分支合并到xx分支 |
同步远端最新数据 | git pull | 从远程仓库中获取代码并合并(git fetch + git merge) |
版本回退 | git reset | 回退暂存区版本,工作区保持不变,与上一次commit一致 |
版本回退 | git reset [file] | 同上,只是回退到是某一个指定的文件 |
版本回退 | git reset --hard | 重置暂存区与工作区,与上一次commit保持一致 |
查看提交 | git log --oneline | 一行一行地显示提交记录 |
查看当前分支状态 | git status | 可以显示当前分支的change条目 |
创建分支 | git branch xx | 创建分支xx |
切换分支 | git checkout xx | 切换到分支xx |
切换分支 | git checkout -b xx | 创建并切换到分支xx |
同步分支 | git rebase xx | 把当xx分支合并到当前分支,一般xx是主分支,当前分支是主分支的分支,用于拉取主分支最新状态,详细可阅:git rebase |
转移分支 | git cherry-pick xx | 将xx节点转移到当前分支,功能类似于git merge,但转移的只是某一个节点或者某些节点,详细可阅:git cherry-pick |
3、常见的场景应用
- 提交本地代码到远程仓库:
git add .
git commit -m “xx”
git push (如果不行就根据提示加入分支名) - 拉取最新的远程仓库数据:
git pull
git status (查看当前状态) - 合并本地分支:
git checkout branch1
git merge branch2 (将branch2合并到branch1,常见于将开发分支合并到主分支) - 创建工作分支并push到远程仓库中:
git checkout -b branch1
git push origin branch1
git branch --set-upstream-to=origin/branch1 (将本地分支branch1关联到远程分支branch1上) - 版本回退:Git撤销与回滚