我为一个使用Subversion作为主要VCS的团队工作,但几乎每个人都开始通过git-svn在本地使用git.现在我们正在考虑完全转换为git.
作为一个中间步骤,最好同时使用它们两个.问题不在于那些非常乐意切换到git的用户,而是我们围绕Subversion构建的持续集成/构建基础架构.管理当然不会对任何大爆炸导致的停机时间感到激动,我们每两周发布一次新功能,几乎每天都会发布错误修复和其他小问题.理想情况下并行运行这些系统会使最终的开关成为无问题.
问题似乎是不存在源自Subversion存储库的共享git存储库.每个并行git svn merge/rebase都会创建新的git提交,这些提交都是重复的.并行我指的是两个开发人员在他们自己的同一个git存储库的克隆中进行合并或重组.更糟糕的是,git svn dcommits似乎改变了git commit的ID.
那么这种环境是否可能,或者git-svn真的只是一个单用户工具?
我正在使用git-svn在本地使用git并部署客户端的svn repo.但是,在将svn ignore条目迁移到.gitignore后,我必须将它们提交给git.
但我不希望每次执行时都将该文件作为对svn repo的提交进行推送 git svn dcommit
有什么建议?
我想知道GIT在执行本地提交(提交命令)时给出的差异(或者说优势),而不是在离线工作时保存SVN中工作目录的更改(未连接到服务器)
我已经读过GIT提供离线工作的优势,即用户可以在本地执行多次提交,然后当用户连接到服务器时,他可以将更改推送到远程服务器.我想知道为什么所有提交命令都只是提交到本地磁盘是有利的,这只是保存对SVN中磁盘的更改(当没有与服务器连接时)而不是提交到项目分支.
我喜欢GIT,但我无法理解这种差异.请帮忙 !!
谢谢,Nayan
我最近克隆了一个SVN存储库,它曾经有一些二进制文件,不再需要它们了.不幸的是,我已经把它推到了Github,其中包含了二进制文件.我现在想要使用'git filter-branch'删除它们,但是当涉及到标签和分支时我遇到了一些问题.
基本上,我创建了一个简单的shell脚本来删除已由以下命令确定的文件列表:
git rev-list --objects --all | grep .jar > files.txt
Run Code Online (Sandbox Code Playgroud)
删除脚本如下所示:
#!/bin/sh
while read file_hash file_to_remove
do
echo "Removing "$file_to_remove;
git filter-branch --index-filter "git rm --cached --ignore-unmatch $file_to_remove"
rm -rf .git/refs/original/;
git reflog expire --all --expire-unreachable=0;
git repack -A -d;
git prune
done < $1
Run Code Online (Sandbox Code Playgroud)
我有一些标签(全部列在.git/packed-refs中),一个.git/refs/remotes/origin(指向Github repo).使用上面的脚本删除文件没有想要的效果('du -cm'仍然输出相同的大小;'git rev-list'仍然列出文件),直到我手动删除.git/packed中的所有引用-refs和.git/refs/remotes/origin目录.
当然,我正在丢失所有标签以及使用这种方法将我的本地更改推回给Github的可能性.有什么我错过了或有没有其他方法从所有分支/标签中删除文件而不破坏我的历史记录?
非常感谢,Matthes
如何在bitbucket帐户中更改提交用户名?要改变git,我使用了这个命令
git filter-branch -f --env-filter " GIT_AUTHOR_NAME='newUser' GIT_AUTHOR_EMAIL='newuser@email.com' " HEAD
Run Code Online (Sandbox Code Playgroud)
它只更改本地计算机中的用户名,但不会更改我的bitbucket帐户中的用户名.如何在bitbucket中更改提交的用户名?
我有一个现有的git存储库,我一直在努力.但是最近,我需要将提交推送到svn(不需要包含所有合并,但至少有一个线性主分支可以)
我不是很擅长git/svn,我只是一个普通的用户,使用SourceTree和CornerStone或者Tortoise,有很好的用户界面来做我的提交,分支和标记.我之前使用git-svn将svn repo迁移到git中,但从来没有反之亦然.
可能吗?我已经通过几个教程搜索,但没有一个工作.我也没有很好的与喜欢那些术语rebase,reflog等会很感激,如果有一些很好的指导来完成简单的事情,而不需要通过GIT中/ SVN的更复杂的部分学习.(简单,因为我猜必须有人面对同样的问题并且之前做过)
提前致谢!
这是我的设置......
笔记本电脑(Mac) - svn存储库的git克隆
拇指驱动器 - 笔记本电脑git存储库的git克隆
服务器(Win Server 08) - 拇指驱动器存储库的git clone
由于某种原因,我无法保持同步......
如果我在服务器上进行更改,我会在拇指驱动器上执行"git pull"以获取更改.将拇指驱动器带到笔记本电脑上并在笔记本电脑上进行"git pull".从那里,我可以做"git svn dcommit",一切都进入SVN回购没有问题.
如果我使用"git svn rebase"从SVN中取出更改,然后拉动到拇指驱动器并执行"git status",它表示我在主/源之前的##版本,我无法弄清楚为什么.
服务器
>git remote show
origin
>git remote show origin
* remote origin
Fetch URL: E:/proj
Push URL: E:/proj
HEAD branch: master
Remote branch:
master tracked
Local ref configured for 'git push':
master pushes to master (local out of date)
Run Code Online (Sandbox Code Playgroud)
笔记本电脑
>git remote show
(nothing)
>git remote show origin
fatal: 'origin' does not appear to be a git …Run Code Online (Sandbox Code Playgroud) 我正在尝试将现有的svn存储库移动到git.我们不需要在两者之间进行任何同步(所以没有git svn fetches或dcommits) - 我们只是移动过来就是这样.
我发出此命令来创建git存储库:
git svn clone -s https://server/repos/my_repo
Run Code Online (Sandbox Code Playgroud)
这很好.但是,当我cd进入新my_repo目录时,其中的文件是其中一个分支(不是主干)的一部分.
做一个git branches -a收益率:
* master
modelExperimentalTrunk
modelExperimentalTrunk@719
dRefactoring
reorganise
stableV396
tags/v1.0
trunk
Run Code Online (Sandbox Code Playgroud)
我在主分支上,但是我的沙箱中的文件实际上来自dRefactoring分支(我们较为模糊的分支之一).
问题:
master分支机构没有连接trunk?trunk?或者可以在git svn clone舞台上完成吗?git svn可以创建一个--bare存储库?Git在我的本地计算机上配置.我使用了以下命令
git add .
git commit -m "message "
Run Code Online (Sandbox Code Playgroud)
昨天忘了推.我昨天做了几处修改.今天由于一些问题,我无法做到push.我不知道今天早上发生了什么,但我的所有代码都消失了.
我需要哪些命令来获取代码?
谢谢
我正在尝试使用此命令将SVN存储库中的最后100个修订引入本地git存储库(在Windows上)。
git svn clone http://...-r 100
由于某些原因,除了.git文件夹以外,结果检出为空。
但是如果没有-r参数,它就可以正常工作(尽管可以检查出时间的曙光)。
有人知道发生了什么吗?
谢谢!