我想在默认情况下推拉所有分支,包括新创建的分支。

我可以为它定义一个设置吗?

否则,当我在本地添加一个新分支时,我想从服务器中获取它,最简单的方法是什么?

我创建了一个具有相同名称的新分支,并试图拉,但它不起作用。要求我提供分支机构的所有远程配置。怎么设置呢?


当前回答

我使用下面的命令将所有分支迁移到新的存储库。

~$ git clone --mirror <url_of_old_repo>
~$ cd <name_of_old_repo>
~$ git remote add new-origin <url_of_new_repo>
~$ git push new-origin master
~$ git push new-origin --mirror

注意:当从Atlassian Stash克隆一个repo到AWS CodeCommit(空白repo)时,我不得不使用第二个最后(即推主第一个)命令。我不确定原因,但在push (git push new-origin——mirror) default branch指的是master以外的一些其他分支。

其他回答

如果你从一个远端源推到另一个远端源,你可以使用这个:

git push newremote refs/remotes/oldremote/*:refs/heads/*

这对我很管用。参考这个:https://www.metaltoad.com/blog/git-push-all-branches-new-remote

添加新的远程回购,最后一步将在您推送时排除HEAD分支

git clone <url_of_old_repo>
cd <name_of_old_repo>
git remote add new-origin <url_of_new_repo>
git ls-remote . | grep 'refs/remotes/origin/' | grep -v 'HEAD' | awk -F 'origin/' '{print $2}' | xargs -i git push -f new-origin  --tags refs/remotes/origin/{}:refs/heads/{}

最简单的方法是:

git push --all origin

这将推动标签和分支。

首先将远程git添加到您的loacl with中

git remote add remote_name remote_address

而之后你只需要用下面的命令就可以了

git push --all remote_name

对我来说,转移所有分支和标签的完整过程是,结合@vikas027和@kumarahul的答案:

~$ git clone <url_of_old_repo>
~$ cd <name_of_old_repo>
~$ git remote add new-origin <url_of_new_repo>
~$ git push new-origin --mirror
~$ git push new-origin refs/remotes/origin/*:refs/heads/*
~$ git push new-origin --delete HEAD

最后一步是因为一个名为HEAD的分支由于通配符出现在新的远程中