远程仓库是指托管在网络服务器上的项目仓库.
可能会有好多个项目仓库,其中有些你只能读,另外有些可以写。同他人协作开发某个项目时,需要管理这些远程仓库,以便推送或拉取数据,分享各自的工作进展。
假设远程仓库有一个默认远程分支 dev 。如果将其克隆为本地库:
git 会自动将远程仓库命名为 origin ,并拉下所有的数据
同时创建一个 dev 远程分支的指针,即远程跟踪分支 origin/dev
创建一个默认远程分支的本地副本,命名为同名的跟踪分支 dev
注:
1.前面的 “origin” 是一个远程仓库。该仓库的所有分支被称为远程分支。
2.远程跟踪分支是本地仓库中指向远程仓库中远程分支的指针,因此名字使用了 “ 远程仓库名 / 远程分支名 “ 的形式。
远程跟踪分支就像书签,提醒你在上次网络通信时,相应远程分支位于远程仓库的何处
这些远程跟踪分支是指向远程分支的远程引用,而不是本地的引用,因此,本地的分支操作没办法使它们移动。
这些远程引用,在每次与远程仓库进行网络通信时, git 会移动它们,以确保它们准确地表示了远程仓库的状态。
3.跟踪分支:从远程跟踪分支自动创建的本地分支 ( 它跟踪的远程分支称为“上游分支” ) 。
创建一个新仓库的操作如下:
1.假设现在在github上创建了一个远程仓库,名为 hexoTest
2.创建Personal access tokens (classic) 个人令牌
3.初始化本地仓库
4.添加远程服务器(与远程仓库建立连接)
注:
1).local :新添加一个本地仓库并取的别名(一般设为 origin)
2).url:github上的http协议远程仓库对应的地址
5.git remote -v 查看当前本地仓库连接有哪些远程仓库
6.git fetch 下载所有远程分支的对象和引用
如果命令后加上路径: git fetch origin dev 只会用远程分支 dev 更新远程跟踪分支 origin/dev (注意local和origin名字)
7.git merge local/dev –allow-unrelated-histories
它的本意就是提醒你注意了,这是俩不同的库.要合并了,要注意了.
此时才创建了跟踪分支,把远程仓库的文件拉取到本地仓库
8.假设现在在本地仓库做了一次提交
9.推送本地分支
把本地的 dev 跟踪分支推送到远程仓库 origin 的 dev 远程分支上:
git push local dev:origin dev (from:to)
如果本地仓库名local也设置为origin,可简化命令为 git push origin dev
为了操作方便,建议设置为origin
注意:
1.最好 本地分支 是 远程分支 的快进合并
2.不带参数的 git push 会默认推送当前分支
3.git push -u local dev (-u 是 –set-upstream的简写)
在你第一次提交你的分支的时候使用。它会像git branch –set-upstream一样在本地分支与远程分支去建立联系。
通常我们在新建分支的时候,一定要显式建立这种联系。
-u 参数指定本地 dev 分支设置为跟踪分支,会跟踪远程跟踪分支 origin/dev ,从而也跟踪了 github 上的远程分支 dev
4.后面的推送就可以不加 -u 参数
10.推送成功后可见远程仓库对应有了改变
11.可以使用 push 来删除远程仓库的远程分支
git push origin –delete 分支名
其他:
pull = fetch + merge
//git fetch 三种情况
1.在当前分支不能fetch分支名相同的分支
2.在当前分支可以fetch分支名不同的分支 (快速合并情况)
3.当远程分支和本地分支分叉时
fetch下来再手工merge