mip*_*adi 682
但我得到一个错误"![拒绝]"和"非快进"的事情
那是因为Git无法将分支的更改合并到当前的主服务器中.假设你已经签出了分支master,并且想要在远程分支中合并other-branch.当你这样做:
$ git pull origin other-branch
Run Code Online (Sandbox Code Playgroud)
Git基本上是这样做的:
$ git fetch origin other-branch && git merge other-branch
Run Code Online (Sandbox Code Playgroud)
也就是说,a pull只是a fetch后跟a merge.然而,当pull-ing,Git会只合并other-branch ,如果它可以进行快进合并.一个快进合并是合并在您试图合并到分支的头部是一个直接后裔要合并分支的头.例如,如果您有此历史记录树,那么合并other-branch将导致快进合并:
O-O-O-O-O-O
^ ^
master other-branch
Run Code Online (Sandbox Code Playgroud)
但是,这不是一个快速合并:
v master
O-O-O
\
\-O-O-O-O
^ other-branch
Run Code Online (Sandbox Code Playgroud)
要解决您的问题,请先获取远程分支:
$ git fetch origin other-branch
Run Code Online (Sandbox Code Playgroud)
然后将它合并到您当前的分支中(我假设是master),并修复任何合并冲突:
$ git merge origin/other-branch
# Fix merge conflicts, if they occur
# Add merge conflict fixes
$ git commit # And commit the merge!
Run Code Online (Sandbox Code Playgroud)
inn*_*naM 292
只需明确跟踪远程分支,简单git pull就可以完成您想要的操作:
git branch -f remote_branch_name origin/remote_branch_name
git checkout remote_branch_name
Run Code Online (Sandbox Code Playgroud)
后者是一项本地行动.
git branch -f new_local_branch_name upstream/remote_branch_name
Run Code Online (Sandbox Code Playgroud)
Rob*_*bri 115
您可以使用以下命令将分支拉到分支.
git pull {repo} {remotebranchname}:{localbranchname}
git pull origin xyz:xyz
Run Code Online (Sandbox Code Playgroud)
当你在主分支机构时,你也可以先检查一个分支,如:
git checkout -b xyz
Run Code Online (Sandbox Code Playgroud)
这将从主控器创建一个新分支"xyz"并直接将其检出.
然后你做:
git pull origin xyz
Run Code Online (Sandbox Code Playgroud)
这会将新分支拉到您当地的xyz分支.
moh*_*hit 85
最好的方法是:
git checkout -b <new_branch> <remote repo name>/<new_branch>
Run Code Online (Sandbox Code Playgroud)
Ale*_* N. 31
我不确定我是否完全理解这个问题,但拉动现有的分支是这样完成的(至少它对我有用:)
git pull origin BRANCH
Run Code Online (Sandbox Code Playgroud)
这假设您的本地分支是从origin/BRANCH创建的.
Adr*_*aud 15
简单地说,如果你想从 GitHub 拉取分支the_branch_I_want:
git fetch origin
git branch -f the_branch_I_want origin/the_branch_I_want
git checkout the_branch_I_want
Run Code Online (Sandbox Code Playgroud)
ana*_*nik 13
这有助于我在将其合并到其他之前获得远程分支:
git fetch repo xyz:xyz
git checkout xyz
Run Code Online (Sandbox Code Playgroud)
Ban*_*nty 10
这些对我有用。
<remote_repo>远程仓库在哪里,<remote_branch>是你要拉取的特定远程分支)git pull <remote_repo> <remote_branch>
Run Code Online (Sandbox Code Playgroud)
例如
git pull origin remote_master
Run Code Online (Sandbox Code Playgroud)
<local_branch>你要拉入的具体本地分支在哪里)git pull <remote_repo> <remote_branch>:<local_branch>
Run Code Online (Sandbox Code Playgroud)
例如
git pull origin remote_master:local_master
Run Code Online (Sandbox Code Playgroud)
小智 6
你也可以这样做
git pull -r origin master
Run Code Online (Sandbox Code Playgroud)
修复合并冲突(如果有)
git rebase --continue
Run Code Online (Sandbox Code Playgroud)
-r 用于变基。这将使你的分支结构来自
v master
o-o-o-o-o
\o-o-o
^ other branch
Run Code Online (Sandbox Code Playgroud)
到
v master
o-o-o-o-o-o-o-o
^ other branch
Run Code Online (Sandbox Code Playgroud)
这将带来更干净的历史。注意:如果您已经将其他分支推送到原点(或任何其他远程),则可能必须在变基后强制推送您的分支。
git push -f origin other-branch
Run Code Online (Sandbox Code Playgroud)
小智 6
git pull <gitreponame> <branchname>
Run Code Online (Sandbox Code Playgroud)
通常,如果您只将存储库分配给您的代码,那么 gitreponame 将是 origin。
如果您正在处理两个存储库,例如一个是本地的,另一个是远程的,您可以从git remote -v检查存储库的列表。这显示了有多少存储库分配给您当前的代码。
BranchName 应存在于相应的 gitreponame 中。
您可以使用以下两个命令来添加或删除存储库
git remote add <gitreponame> <repourl>
git remote remove <gitreponame>
Run Code Online (Sandbox Code Playgroud)
我做了
git branch -f new_local_branch_name origin/remote_branch_name
Run Code Online (Sandbox Code Playgroud)
代替
git branch -f new_local_branch_name upstream/remote_branch_name
Run Code Online (Sandbox Code Playgroud)
正如@innaM 所建议的那样。当我使用上游版本时,它说'fatal: Not a valid object name:'upstream/remote_branch_name''。我没有git fetch origin按照评论的建议去做,而是简单地替换upstream为origin. 我猜他们是等价的。
小智 6
要从 GitHub 中提取分支,您可以使用
git checkout --track origin/the-branch-name
Run Code Online (Sandbox Code Playgroud)
确保分支名称完全相同。
| 归档时间: |
|
| 查看次数: |
1102802 次 |
| 最近记录: |