git 中的pull和pull origin develop有什么区别?

git pull

和下面这种拉取develop分支有什么区别?

git pull origin develop
阅读 20.3k
4 个回答
  • git pull = git fetch + git merge
  • git pull origin develop 动作是去获取远程仓库中develop分支上的commits,然后把origin/develop merge到你目前check out下来的分支中
  • git pull 就是省去了指定分支,默认就是去你之前check out 的分支上去操作,比如,如果你本地的check out的分支 track的就是origin/develop,那么git pull就等于git pull origin develop

首先不建议使用 git pull 拉取代码,建议使用 git fetch + git merge来拉取代码。

git pull 默认是从和当前工作区的分支一样的远程分支拉取代码,例如:

当前工作区分支:dev,那么 git pull 等于 git pull origin dev.

当然有特殊情况,本地是dev分支,想从mater分支拉取代码,那么就得使用: git pull origin master,不过这种情况很少,如果有这种情况建议使用:get merge master代码分支合并。

总的来说: git pull 默认缺省值就是当前工作区的分支

git pull

Default values for <repository> and <branch> are read from the "remote" and "merge" configuration for the current branch as set by git-branch[1] --track.

如果当前分支所 track 的 remote 分支就是 origin 的 develop 分支,两者是一样的。

git pull origin develop

会拉取(git fetch) origin ,并将 origin/develop 合并到(git merge) 当前分支。

git push和git push origin master区别在于git的目录下有一个.git目录下有一个有个config文件,当没有将远程分支和本地分支内容如下所示:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://gitee.com/BattleHeart/test.git
    fetch = +refs/heads/*:refs/remotes/origin/*

当使用git push --set-upstream origin master建立关联后,他内容如下所示

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://gitee.com/BattleHeart/test.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

多出了上面branch “master”,其中表示是远程分支origin/master分支和本地master分支之间关系。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进