我正在使用git-svn; 我通常创建一个主题分支,提交它,然后checkout master,git svn rebase,git merge --squash topic_branch,git commit -m"summary comment",然后git svn dcommit.
这工作正常,但git似乎并不知道我将分支更改合并到master.我试过这个没有svn参与:
# Make a repository, add a couple files
$ mkdir gittest
$ cd gittest
$ git init
$ touch foo bar
$ git add .
$ git commit -m "initial version"
# Make a branch, change a file, commit.
$ git checkout -b a_branch
$ vi foo # make a change
$ git commit -am "a change"
# Merge changes into master
$ git checkout master …Run Code Online (Sandbox Code Playgroud) 我正在将一个大的SVN存储库转换为多个git存储库(每个项目一个).
我正在为每个repo运行svn2git,包含所有不需要的目录,--exclude这样可以保留标签和分支(我在转换后删除所有不相关的标签和分支)
唯一的问题是我有大量空提交(与排除目录相关的提交).
有没有办法在svn2git进程中排除这些空提交?
此解决方案是在事实之后删除它们的好方法,但filter-branch只影响当前分支,而不影响所有其他分支和标记.
任何人都可以告诉我如何使用git附件与bup.
git annex initremote mybup type=bup encryption=none buprepo=example.com:/big/mybup
Run Code Online (Sandbox Code Playgroud)
不适合我.如果我打字
git annex
Run Code Online (Sandbox Code Playgroud)
它将列出所有命令,但是在这个initremote命令中不存在.可能是什么问题呢.
我有一个生产SVN存储库,我想用git克隆.当我尝试git svn clone它时,我得到的错误与一些具有路径文件名长组合的文件有关.
我认为这是由git用来运行的GNU shell mingw32引起的限制,因为windows或unix都没有这种限制.
无论如何要克服这个限制吗?在我确定要转移到git之前,我不想开始更改文件名/路径.
谢谢.
好的,所以我在GitHub上有一个分叉的回购,而且自从我分叉后,上游回购没有更新.昨天,我创建了一个基于最后一次上游提交的分支,这是在我几个月前分配回购之前做的.
我在分支上做了一个错误的提交,所以我尝试通过git push -f origin HEAD^:master在我的本地分支实例上使用它来撤消它,但正如你所看到的,我忘了改为master分支的名称.所以它最终覆盖了我在主人身上所做的一切.
我的问题是,有没有办法解决这个混乱,所以我可以让主人回到这个特定的推动之前的状态?
我经常使用TortoiseGit和TortoiseSVN,在Git的任何组件之前我都看不到我在主服务器上做过的任何事情,但是我仍然可以在SVN trunk的历史日志中看到我之前的所有提交.我之前没有一个干净的本地主实例.
我试过的东西一样git reset --hard <last good commit hash>或git push -f origin <last good commit hash>:master,但它说,任何犯了这样的哈希存在.我仍然可以从浏览器历史记录中访问GitHub上的所有先前提交.
下游没有任何东西,所以不用担心.
有小费吗?
我有一个git svn rebase,我发生了冲突.我想git-merge-file通过选择服务器上的版本来合并文件的两个版本.git-merge-file调用此选项--theirs但git-merg-file需要3个参数.我如何只传递包含冲突标记的文件并让它选择它们的版本?
我也试过,git merge -Xtheirs file.cpp但它不起作用.
我正在使用安装了git 1.8.3.msysgit.0的64位Windows 7.
该命令git工作正常,从以下任何地方:
PS C:\dev> git --version
git version 1.8.3.msysgit.0
Run Code Online (Sandbox Code Playgroud)
但是,该命令git-svn不会:
PS C:\dev> git-svn
The term 'git-svn' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:8
+ git-svn <<<<
+ CategoryInfo : ObjectNotFound: (git-svn:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Run Code Online (Sandbox Code Playgroud)
上面给出的示例是使用PowerShell,但运行Git bash会产生类似的错误:
$ git-svn
sh.exe": …Run Code Online (Sandbox Code Playgroud) 我在svn上签出我自己的私人分支,如下所示:
git svn clone svn://server/cfe/project/branches/fb_oz_3173_email
Run Code Online (Sandbox Code Playgroud)
现在我在分公司master.
我想要:
fbsvn://server/cfe/project/trunk我做不到.有人可以给我带头吗?
git branch -m fb当git-svn需要重建其内部地图时,它会将所需信息输出到STDERR:
Rebuilding .git/svn/refs/remotes/origin/trunk/.rev_map.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
r38601 = 28d3a624c5c96db9a1f45d8f261a9b0de1f6f288
r38652 = 74c55b8dff798e5ae1bc2ad00d8ec6eee4f2646b
r38744 = eb457e1949ecf854816ba9cf64b4bace710a7302
r38745 = 5bca99a37fbc6db72d2d50a75301185f4297926c
(...)
Run Code Online (Sandbox Code Playgroud)
该文件.git/svn/refs/remotes/origin/trunk/.rev_map.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX遗憾的是二进制文件,因此无法轻松解析.有没有办法git-svn通过特定命令输出上述信息?git 2.7.0顺便说一句,我在上.
编辑:我知道git svn find-rev,但这只会让我找到单个修订版的SHA-1提交哈希值,我必须提供一个特定的SVN修订版.但是,我想得到的是所有修订版的映射.最好不要强行通过或使用外部数据源(即SVN repo)来提供SVN修订作为输入.最优选的是,在没有提供任何内容的情况下,因为在git-svn构建了其修订版图之后,此信息存储在存储库中 - 或者不是?