Git 分布式版本控制工具
本文更适用于对于 Git 有基本认识的小伙伴,本文提供了清晰的目录和逻辑,建议点赞+收藏,搭配 Git 文档一起食用,效果满满
Git
初始化
基本操作(工作区,暂存区,版本库)
Tags
本地分支
分支思维图
分支管理
合并
remote 仓库
git remote
查看已经配置的远程仓库服务器
git remote -v
指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
git clone
克隆一个仓库
git remote add <shortname> <url>
添加一个远程仓库
git fetch <remote>
从远程仓库抓取自上一次抓取后的所有工作
值得注意的是 git fetch
命令只会将数据下载到你的本地仓库—它并不会自动合并或者修改你当前的工作,当准备好时你必须手动将其合并入你的工作
git push <remote> <branch>
推送到远程仓库的地址
git remote set-url origin <url>
更改远程仓库的地址
git remote show <remote>
查看一个远程仓库的更多信息
git remote rename <oldname> <newname>
修改一个远程仓库的简写名
git remote remove <shortname>
移除一个远程仓库
或 git remot rm <shortname>
(一旦你使用这种方式删除了一个远程仓库,那么所有个这个远程仓库相关的远程跟踪分支以及配置信息也会一起被删除)
remote 分支
git ls-remote <remote>
来显式地获得远程引用的完整列表
git remote show origin
获得远程分支的更多信息
流程图:
拉取(clone / fetch / pull)
git clone
- git clone 一个仓库时,只会克隆远程仓库主分支的内容,不会克隆其他分支上的内容,当克隆一个仓库时,它通常会自动地创建一个跟踪 origin/master 的 master分支
- git clone 命令会为你自动将远程仓库命名为 origin,拉取它的所有数据,创建一个指向它的 master 分支的指针,并且在本地有一个远程跟踪分支 origin/master
- 如果你运行 git clone -o booyah,那么你默认的远程分支名字将会是 booyah/master
git fetch
- fetch 数据,就会从远程仓库中抓取数据,并且会更新本地数据库,移动 origin/master 指针到更新之后的位置
- 你只要不从服务器拉取数据,你的 origin/master 指针就不会移动
- 当抓取到新的远程跟踪分支时,本地不会自动生成一份可编辑的副本(拷贝)。换句话说,这种情况下,不会有一个新的 serverfix 分支--------只有一个不可以修改的 origin/serverfix 指针
- 可以运行
git merge origin/serverfix
将这些工作合并到当前所在的分支,如果想要在自己的 serverfix 分支上工作,可以将其建立在远程跟踪分支上
git pull
- git pull 相当于 git fetch + git merge
- git pull 会查找当前分支所跟踪的服务器与分支,从服务器上抓取数据,然后尝试合并入那个远程分支
本地分支与远程跟踪分支建立联系(跟踪分支)
git clone
只会在本地创建 origin/master
和 master
跟踪分支
推送 (push)
删除远程分支
可以使用运行带有 --delete
选项的 git push
命令来删除一个远程分支
git push origin --delete <branchName>
为项目做贡献(Fork)
流程通常如下:
- 派生一个项目
- 从
master
分支创建一个新分支 - 提交一些修改来改进项目
- 将这个分支推送到 GitHub 上
- 创建一个拉取请求
- 讨论,根据实际情况继续修改
- 项目的拥有者合并或关闭你的拉取请求
- 将更新后的
master
分支同步到你的派生中