实例之推送流程
本地分支向一固定分支推送
-
GitHub上创建仓库(创建了README.md,且有一固定名字分支情况下,设default分支名字是"main")
-
本地
git init
-
本地
git remote add origin URL
-
本地
git pull <远程主机名"origin"> <远程分支名"main">:<本地分支名"master">
# 把远程最新的代码更新到本地 -
本地
git branch --set-upstream-to origin/<远程分支名"main">
# 关联远程分支* master fa87883 [origin/divide-and-conquer: ahead 1, behind 1] test
-
出现类似如上信息,则说明关联成功,
master
为本地分支名,divide-and-conquer
为远程分支名,test
为commit提交信息 -
如果push时,严格使用git push <远程主机名> <本地分支名>:<远程分支名>,则不需要第5步关联远程分支了!
-
-
本地
git add .
-
本地
git commit -m "xxx"
-
本地
git push <远程主机名> <本地分支名"master">:<远程分支名"main">
【注:易错点】
如果在第3步后 没有先 进行git pull <远程主机名> <远程分支名>:<本地分支名>
合并远程分支到本地(同时使得两个分支初始历史记录一致) ,而是先进行了git add .
操作的话
(由于远程分支和本地分支是两个独立的分支,本地先 git add .
导致本地历史先出现了更改操作,本地分支与远程分支历史不同步,后续操作会出现错误,如下表)
操作 | 错误 |
---|---|
git pull <远程主机名> <远程分支名>:<本地分支名> | fatal: refusing to merge unrelated histories |
git push <远程主机名> <本地分支名>:<远程分支名> | failed to push some refs to git |
这种情况可以使用 在操作后+--allow-unrelated-histories
的方法来忽略两个分支历史联系,例如:
git pull <远程主机名> <远程分支名>:<本地分支名> --allow-unrelated-histories
git push <远程主机名> <本地分支名>:<远程分支名> --allow-unrelated-histories
本地分支向远程仓库推送到一个新分支(原来没有,需要在git过程中创建)
-
GitHub上创建仓库,你不想推送至main分支,而是一个新的分支"new"
-
本地
git init
-
本地
git remote add origin URL
-
本地
git add .
-
本地
git commit -m "xxx"
-
本地
git push <远程主机名"origin"> <本地分支名"master">:<远程分支名"new">
上面提到过,该命令可以直接创建远程分支。
* [new branch] master -> new
出现上述,说明创建成功,new
为远程分支名
- 如果你本地没有写README文件,你也可以在GitHub中创建你的README文件。
【注】
直接push即可,无需关心git add .
命令是否会破坏历史记录,既然远程仓库还没有分支,何来破坏可言,push时输入想要创建的分支名字,会直接同步历史创建该分支。