繁体   English   中英

git:从外部签出工作树分支

[英]git: checkout work-tree branch from outside

Git版本:2.5.1。 Windows .1(通过git-scm.com)

设定:

Main Repo:    Branch_A -> commit -> commit -> commit -> commit
                             \
Worktree:                     -> Branch_B -> commit -> commit
                                     \
                                      -> local Branch_C -> commit

我通过创建了第二个工作树

git worktree add /C/repos/testbranch Branch_B

效果很好

现在我要做的是在工作树中创建本地分支(例如Branch_C)并将其提交后,从外部将工作树的分支从外部切换回分支Branch_B。 之后,我尝试了以下操作:

签出的分支是Branch_C,并在Branch_B上另外提交了一次

git --work-tree=/C/repos/testbranch/ --git-dir=/C/repos/testrepo/.git/ checkout Branch_B

但是我得到的输出是:

error: Your local changes to the following files would be overwritten by checkout:
    bla <-- My test file which is COMMITTED and UNCHANGED in Branch_C
Please, commit your changes or stash them before you can switch branches.
Aborting

我尝试从其他目录执行此操作,尝试添加/省略--git-dir和其他一些内容-似乎没有任何效果。 我究竟做错了什么?

编辑:通过检出分支

git checkout Branch_B

在/ C / repos / testbranch /中运行正常。


背景:我正在使用的存储库是从SVN存储库中克隆的。 我想要实现的是使用ANT(<exec>任务)自动执行“ svn rebase”的过程。 第一步是签出指向SVN信息库上分支的分支。 不幸的是,仅在ANT任务中使用checkout失败, not a git repository: $SECOND_WORKTREE_DIR

脚步:

  1. 结帐$ orig_branch
  2. git svn获取
  3. (可选)最新版本的git svn find-rev修订版(可能不是最后的提交)
  4. git rebase $ svn-branch_build-rev $ orig_branch

找到了解决方案。

  1. 您不需要在工作树的文件夹中工作,因为存储库保持不变。 假设您需要进行SVN提取,则可以从主工作树中进行。
  2. 您可以通过执行git安装的sh.exe并向其传递命令(也可以是cd )来规避上述问题:

    <exec可执行文件=“ C:/ Program Files / Git / bin / sh.exe” failonerror =“ true”>
    <arg value =“-login” />
    <arg value =“-c” />
    <arg value =“” cd / C / repos / testbranch && git checkout Branch_B“” />
    </ EXEC>

Git 2.11+(2016年第四季度)可能会更优雅地处理这种情况:

参见Eric Wong( ele828 )的 提交112423e提交b26098f (2016年10月14日
(由Junio C gitster - gitstercommit 251641b中合并 ,2016年10月27日)

git-svn :“ git worktree ”意识

git-svn内部人员以前不了解“ git worktree ”命令用户的存储库布局差异。

通过使用“ git rev-parse --git-path ”来引入这种意识,而不是依赖于GIT_DIR和朋友的过时用法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM