美文网首页
远程仓库操作

远程仓库操作

作者: 若兮缘 | 来源:发表于2018-12-14 18:54 被阅读89次

    远程仓库

    1.克隆远程仓库

    git clone <url> [dir] #将存储库克隆到新创建的目录中,默认与远程主机的版本库同名,可以指定目录名称dir
    执行此命令会为克隆的存储库中的每个分支创建远程跟踪分支(使用git branch -r可见),并且本地创建一个master分支,与本地的远程跟踪分支master进行关联。

    2.添加远程仓库

    git remote add <remoteName> <url> #remoteName为远程仓库名称,url为远程仓库链接
    实际上是与远程仓库建立联系,这样在推送和拉取代码时就知道往哪里推送和拉取了。

    示例:在github上新建一个仓库,然后在本地一个空的git仓库里添加远程仓库

    3.查看远程仓库

    git remote #只查看远程仓库名
    git remote -v #查看远程仓库名及url信息

    4.修改|查看远程仓库链接

    git remote set-url <remoteName> <url> #设置指定远程仓库的链接
    git remote get-url <remoteName> #获取指定远程仓库的链接

    5.修改本地远程仓库名称

    git remote rename <old> <new>

    6.删除本地的远程仓库

    git remote remove <remoteName>

    远程分支

    1.远程分支查看

    git branch -a #查看本地及远程分支
    git branch -r #只查看远程分支
    git branch -l #只查看本地分支

    2.1从远程分支拉取内容

    git fetch <remote_name> <branch_name> #从远程仓库的指定同名分支上拉取最新的内容
    git fetch #如果省略参数,会从远程仓库的所有分支上拉取最新的内容
    这将更新git remote中所有的远程仓库所包含分支的最新commitId, 将其记录到.git/FETCH_HEAD文件中
    FETCH_HEAD:该文件在git目录下,指向目前已经从远程仓库取下来的分支的末端版本
    git fetch更新远程仓库的方式如下:

    # 方法一
    git fetch origin master    #从远程的origin仓库的master分支下载代码到本地的origin master
    git log -p master.. origin/master    #比较本地的仓库和远程仓库的区别
    git merge origin/master    #把远程下载下来的代码合并到本地仓库
    
    # 方法二
    git fetch origin master:temp    #本地新建一个分支temp,并将远程origin仓库的master分支下载到本地temp分支
    git diff temp    #比较master分支和temp分支的不同
    git merge temp    #合并temp分支到master分支
    git branch -d temp    #删除temp
    
    2.2从远程分支拉取内容

    git pull <remote_name> <branch_name> #从远程仓库的指定同名分支上拉取最新的内容,会自动进行分支的合并
    该命令等同于 git fetch + git merge
    git pull #如果省略参数,会自动从当前分支名称相同的远程分支上拉取内容。如果当前分支没有跟踪到任何远程分支或者跟踪的远程分支不同名,则拉取失败

    3.推送本地分支至远程

    git push <remote_name> <branch_name> #将指定本地分支推送到远程仓库的同名分支上,如果远程分支不存在则会自动创建
    git push #如果省略参数,会自动将当前分支推送到与其分支名称相同的远程分支上。如果当前分支没有跟踪到任何远程分支或者跟踪的远程分支不同名,则推送失败
    git push <remote_name> <branch_name>:<remote_branch> #将本地分支推送到远程指定的分支上
    例如:
    git push origin dev #推送本地dev分支到远程的dev分支
    git push origin HEAD:master #推送本地HEAD指向的分支(当前工作分支)到远程的master分支

    4.远程分支检出

    如果远程存在多个分支,使用 git clone 只会创建一个master分支 ,需要使用命令进行远程分支检出。
    git checkout -b <branch_name> <remote_name>/<remote_branch>#本地新建分支并检出远程分支代码
    git checkout <remote_branch> #也可以使用该命令进行检出
    对于该命令如果本地有该分支,执行切换操作,如果本地没有该分支,会查找remote上有无该分支,如果有,并将HEAD指向远程分支,并建立追踪关系,如果本地和远程都没有,则报错。
    有时候,会发现明明远端有这个分支却依然报错,可以执行git pull,然后再checkout

    4.远程分支合并

    通常最终代码发布是使用master分支,所以发布前需要进行远程分支合并操作,实际是在本地分支进行合并后然后推送到远程master上,如果本地没有检出远程分支则需要先进行远程分支的检出
    1.git checkout master #切换到master分支
    2.git merge <branch_name> #将分支合并到master分支
    3.git push origin master #将master分支推送至远程
    注:origin为默认远程仓库名称

    5.远程分支删除

    如果远程分支合并完成后不再需要了,可以进行删除操作
    git push origin --delete <branch_name> #直接删除远程分支
    git push origin :<branch_name> #推送一个空分支(也代表删除)

    远程分支跟踪

    1.分支跟踪意义

    从远程分支检出的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程分支有直接联系的本地分支。务必让跟踪分支和远程分支保持同名。
    在跟踪分支里输入git push,Git会自行推断应该向哪个服务器的哪个分支推送数据。反过来,在这些分支里运行git pull会获取所有远程索引,并把它们的数据都合并到本地分支中来。

    2.查看跟踪关系

    git branch -vv #查看本地分支与远程分支追踪关系

    3.自动建立跟踪关系

    1.git clone #建立本地master分支与远程master分支的跟踪关系
    2.git push -u origin <branch_name> #使用-u参数会自动建立本地指定分支与远程同名分支的追踪关系
    3.git checkout -b <branch_name> origin/<remote_branch> #会将远程指定分支与本地指定分支建立跟踪关系

    4.手动建立跟踪关系

    git branch --set-upstream-to origin/<branch> <branch_name> #如果省略branch,则默认与远程的master分支建立联系

    5.切断跟踪关系

    如果本地分支关联的远程分支不存在了,本地分支想保留,需要切换与远程分支的联系
    git branch --unset-upstream <branch_name> #此处的分支名称为本地分支,切断本地分支的远程追踪关系

    6.错误说明

    在使用git pushgit pull时,要特别注意当前分支是否建立了跟踪关系,跟踪分支名称是否相同。
    比如当前在本地rxy分支,此时没有跟踪到任何远程分支,输入git push报错,建议我们建立跟踪关系

    比如当前在本地rxy分支,但是跟踪的是master分支,输入git push报错,因为名称不匹配,建议我们指定参数推送

    相关文章

      网友评论

          本文标题:远程仓库操作

          本文链接:https://www.haomeiwen.com/subject/ffaghqtx.html