git远程易错点
git pull下来用git branch -r查看远程分支才有数据
解决方案:指定当前工作目录工作分支,跟远程的仓库,分支之间的链接关系。
比如我们设置master对应远程仓库的master分支
git branch --set-upstream master origin/master
git branch查看本地分支,git branch -r 查看远程分支
具体原因: 出现这种情况主要是由于远程仓库太多,且分支较多。在默认情况下,git push时一般会上传到origin下的master分支上,然而当repository和branch过多,而又没有设置关联时,git就会产生疑问,因为它无法判断你的push目标。
用如下命令进行本地分支和远程分支进行关联
git push --set-upstream origin master
这样在我们每次想push或者pull的时候,只需要 输入git push 或者git pull即可。
在此之前,我们必须要指定想要push或者pull的远程分支。
git push origin master
git pull origin master.
不然报错
git pull时遇到
fatal: refusing to merge unrelated histories
我们在初见一个git仓库需要将之提交到远程仓库时,使用git pull origin master 命令操作时,会遇到这样的错误:fatal: refusing to merge unrelated histories
这是因为远程仓库已经存在代码记录了,并且那部分代码没有和本地仓库进行关联,我们可以使用如下操作允许pull未关联的远程仓库旧代码:
git pull origin api-dev --allow-unrelated-histories
这样就可以把远程该分支的代码下载到本地了
git branch -vv 可查看本地分支和远程分支的对应关系
根本原因在于本地分支 github 是从远程分支develop拉取的,在执行git push命令时,不知道应该与远程哪个分支进行同步,就会出现上面那个错误
提示了两种解决方法
git push github-origin HEAD:develop
这种是将当前分支推送到github-origin仓库的develop分支
或者
git push github-origin HEAD
这种是将当前分支推送到远程的同名分支,没有就会创建
git rebase变基
设置已有的本地分支跟踪一个刚刚拉取下来的远程分支,或者想要修改正在跟踪的上游分支,你可以在任意时间使用 -u 或 --set-upstream-to 选项运行 git branch 来显式地设置。
可以运行 git merge origin/serverfix 将这些工作合并到当前所在的分支。 如果想要在自己的 serverfix 分支上工作,可以将其建立在远程跟踪分支之上:
有时当初次git push不能参数时会提示这个
原因是本地的分支跟远程的分支名字不一样
git push origin HEAD:develop 的意思是将当前分支推送到origin的develop分支
git push origin HEAD 的意思是将当前分支推送到origin仓库与本地当前分支的同名分支,没有就会新建
删除远程分支
git branch -r -d origin/github 只是删除了fetch或pull下来的上游追踪
远程删除 git push <主机名> :<远程分支名>或git push <主机名> --delete <远程分支名>
有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项。
$ git push --all origin
上面命令表示,将所有本地分支都推送到origin主机。如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项。
$ git push --force origin
上面命令使用-–force选项,结果导致在远程主机产生一个”非直进式”的合并(non-fast-forward merge)。除非你很确定要这样做,否则应该尽量避免使用–-force选项。
git fetch <主机名> <远程分支> : <本地分支>
git fetch origin develop:branch2
意思是把origin主机的develop分支的数据下载到本地分支branch2(没有branch2就新建)