我已经将一个SVN回购移动到Git,可能由于一些克隆,我现在留下了一堆看起来像的分支
BranchA
origin/BranchA
remotes/BranchA
remotes/origin/BranchA
remotes/origin/origin/BranchA
Run Code Online (Sandbox Code Playgroud)
即同一分支被列出多次.我怎样才能清理这个烂摊子.有大约50个分支,有些根本不需要,其余的我只会拥有它们一次.
编辑:
对于特定情况,这就是git remote show origin的样子:
Remote branches:
BranchA tracked
origin/BranchA tracked
Run Code Online (Sandbox Code Playgroud)
...
Local branches configured for 'git pull':
origin/BranchA merges with remote BranchA
Run Code Online (Sandbox Code Playgroud)
...
Local refs configured for 'git push':
BranchA pushes to BranchA (up to date)
origin/BranchA pushes to origin/BranchA (up to date)
Run Code Online (Sandbox Code Playgroud) 这是我目前的设置
FDMBA:EnglishStudy willentriken$ git remote -v
origin root@devel.phor.net:~/repos/echo.git (fetch)
origin root@devel.phor.net:~/repos/echo.git (push)
Run Code Online (Sandbox Code Playgroud)
但我们将服务器的主机名从devel.phor.net更改为其他名称.我可以"重新指定"我的本地git存储库指向这个新的服务器地址而不会丢失我所拥有的任何本地提交等吗?
我很确定之前已经问过这个问题,但我似乎找不到它.很抱歉,如果它是一个dublicate.
我有一个裸存储库,我们称之为project_x.git,如果我们检查它所说的配置文件
[core]
repositoryformatversion = 0
filemode = false
bare = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
Run Code Online (Sandbox Code Playgroud)
所以它肯定是正确的,裸=真.现在我正在尝试用清理版替换master.
$ git push origin :master
remote: Updating references: 100% (1/1)
To http://gitrepo.local/git/project_x.git
! [remote rejected] master (branch is currently checked out)
error: failed to push some refs to 'http://gitrepo.local/git/project_x.git'
Run Code Online (Sandbox Code Playgroud)
我正在使用gitblit btw,这不是实际的服务器URL.
这个回应让我感到困惑,我怎样才能在我的裸仓库上设立一个结账分支?谁在那个分支上工作:),没有任何意义.要么它不是一些配置明智或gitblit与我搞乱.我不明白?
怎么了?
顺便说一句,如果我尝试的话
git push -f ,
Run Code Online (Sandbox Code Playgroud)
编辑:这有效但你不能删除我之前尝试过的分支.
谢谢
我在命令行中输入了以下表达式:
git remote add coworkerBranch git://coworkersUsername/repo.git
git fetch origin
git checkout coworkerBranch
Run Code Online (Sandbox Code Playgroud)
但是,当我检查本地驱动器上的文件时,它们没有被更改以匹配我同事的更改。我是整个 git 语法的新手,所以我可能完全不知道,但是我还需要做些什么来访问他的文件吗?
我是git的新手,我一直在关注这个教程.
在我到达远程存储库之前,我想我理解了大部分内容.关于我理解的远程存储库的唯一概念是git fetch和git remote.根据该教程,git fetch通过git remote的add选项从指定的url获取远程存储库.它将存储库下载到"远程"分支.如果我理解正确,它不是远程存储库中的分支,而是我从远程存储库下载的分支.它还不是我本地存储库的一部分,它仍然可以合并/重新绑定到它(我的本地存储库).也许我错了,我在这里遗漏了一些东西,请随时纠正我.
现在,我觉得我根本不理解的是git如何设法将"远程"存储库重新绑定到我的本地存储库中.
我理解当我对一个分支进行rebase时,它会将该分支中的提交基于它最初分支的不同提交.我仍然需要将分支合并到我的主分支中.我做的时候会发生什么?
git checkout master
git fetch origin
git rebase origin/master
Run Code Online (Sandbox Code Playgroud)
难道这不会将我的本地主分支变成远程主分支吗?我一直在想这张照片.
而不是功能我将拥有我的本地主分支而不是主,我将拥有远程origin/master分支.除了Master没有真正分支出原点/主人.
这不会删除我当地的分公司主人吗?这不会将我的所有工作都转移到"远程"存储库吗?另外,在将其推送到真正的远程存储库之前,我不需要合并回来?
假设远程br1仓库上有远程分支机构检查,master本地仓库上有分支机构.
命令1:如果我做了一个" git pull origin br1:br1"它将远程拉br1入本地br1,并显示:
9188a5d..97d4825 br1 -> br1
9188a5d..97d4825 br1 -> origin/br1
命令2:如果我只做一个" git pull",它会将远程拉br1入本地master,但它只显示以下内容:
9188a5d..97d4825 br1 -> origin/br1
我期待它也会显示" br1 -> master" 这样的东西.为什么没有表现出来?
" br1 -> br1" 是否意味着将远程拉br1入本地br1?
这是什么br1 -> origin/br1意思?
更新:在VonC的帮助下,我发现了以下内容:
git pull更新所有跟踪分支.遥控器上的br1 -> origin/br1装置br1被拉入本地跟踪分支origin/br1.
git pull origin br1:br1将远程拉br1入本地br1并进入origin/br1.然后,之后的消息意味着相同的更改集也被拉入当前签出的分支(消息是 …
如果我使用git remote add为repo 设置两个远程,并且两个repo包含一个具有相同名称的分支.当我使用git checkout切换到它时,git如何知道我打算使用哪个repo分支?
我正在做一个有两个遥控器的项目,一个叫origin,另一个叫vsts。默认的遥控器是origin。这是的输出git remote -v,其中一些部分匿名表示为***:
$ git remote -v
origin git@bitbucket.org:***/***.git (fetch)
origin git@bitbucket.org:***/***.git (push)
vsts ssh://***@vs-ssh.visualstudio.com:***/DefaultCollection/***/_ssh/*** (fetch)
vsts ssh://***@vs-ssh.visualstudio.com:***/DefaultCollection/***/_ssh/*** (push)
我正尝试从中签出新的分支vsts。叫做release/1.4.1。我在Git 2.16.x上,因此我应该可以使用git checkout,但这是发生的情况:
$ git checkout release/1.4.1
error: pathspec 'release/1.4.1' did not match any file(s) known to git.
我想也许是我的意思origin。所以我尝试这样:
$ git checkout vsts/release/1.4.1
error: pathspec 'vsts/release/1.4.1' did not match any file(s) known to git.
我应该确保git可以找到分支。所以我git ls-remote用来获取远程分支的列表:
$ git ls-remote vsts
... …
据我所知,藏匿处是本地的,并不打算被推到远程回购.
有时我的工作还没有准备好,但是我必须以某种方式与其他工作人员分享,或者我自己从不同的工作站访问.
使用git模拟某种"远程存储"或使用git进行像我刚刚描述的工作流程的最佳方法是什么?
我想从我的 shell 添加远程存储库但失败了。我已登录并在我的本地存储库中。所以我输入这个:
% git remote add origin https://github.com/<username>/example.git
% git remote -v
origin https://github.com/<username>/example.git (fetch)
origin https://github.com/<username>/example.git (push)
Run Code Online (Sandbox Code Playgroud)
所以似乎已经创建了repo。但是我在我的 github 帐户中没有看到新的 repo。当我尝试检查遥控器(或在那里推送任何东西)时,它会引发错误:
% git remote show origin
remote: Repository not found.
fatal: repository 'https://github.com/<username>/example.git/' not found
Run Code Online (Sandbox Code Playgroud)
我尝试谷歌搜索类似的问题,但找不到答案。有谁知道我可能会错过什么?
git ×10
git-remote ×10
git-branch ×2
git-checkout ×2
git-pull ×2
github ×2
git-bare ×1
git-config ×1
git-fetch ×1
git-push ×1
git-rebase ×1
git-stash ×1