我在Mac上使用GIT.说够了.我有工具,我有经验.我想继续使用它.这里没有战争......
问题始终在于互操作性.大多数人都使用SVN,这对我来说很棒.Git SVN开箱即用,是一个没有多余装饰的解决方案.人们可以继续愉快地使用SVN,我不会丢失我的工作流程,也不会丢失我的工具.
现在......有些人和Mercurial一起来了.对他们来说很好:他们有他们的理由.但我找不到任何GIT HG开箱即用.我不想切换到HG,但我仍然需要与他们的存储库进行互操作.
你们中的任何人都知道一个简单的解决方案吗?
可能重复:
使用Git如何在本地和远程之间找到修改过的文件
如何在git中看到传入的提交?甚至更好,看看我刚刚git fetch
/ git pull
ED?
编辑: 澄清问题:有人告诉我,要获得一些修复,我应该从他们的存储库中提取.我的目标是在接受之前了解他们的变化. git pull
自动合并,这不是我想要的. git fetch
我会在没有合并的情况下抓住它们,但我不确定如何查看我刚刚插入的内容.原始措辞的原因是我通常使用Mercurial,其中命令是hg incoming <repo name here>
-a命令,git似乎缺少模拟.
我经常读到Hg(和Git和......)在合并方面比SVN更好但是我从未见过Hg/Git可以合并SVN失败的地方(或者SVN需要人工干预的地方)的实际例子.您可以发布一些分支/修改/提交/ ....-操作的逐步列表,显示SVN在Hg/Git愉快地移动时会失败的位置吗?实用,非常特殊的情况请...
一些背景:我们有几十个开发人员在使用SVN进行项目,每个项目(或一组类似项目)都在自己的存储库中.我们知道如何应用发布和功能分支,所以我们不会经常遇到问题(即,我们一直在那里,但我们已经学会克服Joel的问题 "一个程序员给整个团队造成创伤"或"需要六个开发人员两周才能重新整合分支机构").我们的发布分支非常稳定,仅用于应用错误修正.我们的中继线应该足够稳定,能够在一周内创建发布.我们还有一些开发人员或开发人员可以使用的功能分支.是的,它们在重新集成后被删除,因此它们不会使存储库混乱.;)
所以我仍然试图找到Hg/Git优于SVN的优势.我很想获得一些实践经验,但目前还没有任何我们可以移动到汞/ GIT中还没有更大的项目,所以我坚持用只含有少量由文件小型人工玩的项目.而且我正在寻找一些你可以感受到Hg/Git令人印象深刻的力量的案例,因为到目前为止我经常读到它们但却未能自己找到它们.
我们目前在相对较大的代码库上使用subversion.每个版本都有自己的分支,并对主干执行修复,并使用迁移到发布分支svnmerge.py
我相信现在是时候进行更好的源代码控制了,我一直在玩Mercurial.
虽然使用Mercurial管理这样的发布结构似乎有两个学派.每个版本都有自己的repo,并且针对发布分支进行修复并推送到主分支(以及任何其他更新的发布分支.)或在单个存储库(或多个匹配副本)中使用命名分支.
在任何一种情况下,似乎我可能会使用像移植一样的东西,以包含在发布分支中的cherrypick更改.
我问你 每种方法的相对优点是什么?
化石http://www.fossil-scm.org
我最近发现了这个,并开始将它用于我的家庭项目.我想听听其他人对这个VCS的看法.
我脑子里缺少的是IDE支持.希望它会来,但我使用命令行就好了.
关于化石的我最喜欢的事情:内置web服务器wiki和bug跟踪的单个可执行文件.存储库只是一个SQLite(http://www.sqlite.org)数据库文件,易于备份.我也喜欢我可以运行化石并将存储库放在我的拇指驱动器上.这意味着我的软件开发已经变得完全可移植.
告诉我你的想法....
最近有几个关于在Mercurial中维护发布分支时跳过更改的问题.例如:
自从它在2.0中引入以来,我一直想知道如何graft
避免这个问题.给定这样的修订树:
A---B---C---D---E---F---G---H---I---J
Run Code Online (Sandbox Code Playgroud)
假设我们需要创建一个跳过Evil更改的发布分支E
.
hg update -r D
hg graft "F::J"
Run Code Online (Sandbox Code Playgroud)
给我们:
A---B---C---D---E---F---G---H---I---J
\
--F'--G'--H'--I'--J'
Run Code Online (Sandbox Code Playgroud)
transplant
会产生补丁F::J
,然后将它们应用到D
,但graft
据说使用3路合并而不是补丁.那么......这是怎么回事?为什么更好?让我说我现在修复E
,并将其合并到我的发布分支.
--E2-----------------
/ \
A---B---C---D---E---F---G---H---I---J---M1
\ \
--F'--G'--H'--I'--J'---------M2--
Run Code Online (Sandbox Code Playgroud)
M1是直接合并; 没什么特别的.M2正在合并具有"相同"(或至少等同)变化的分支.
D
,J'
和M1
?最后......
我正在使用Mercurial,我在当地遇到了一个可怕的混乱,有三个头.我无法推送,我只想删除所有本地更改和提交,然后重新开始使用完全干净的代码和干净的历史记录.
换句话说,我希望最终得到(a)与远程分支的尖端中存在的本地完全相同的代码,以及(b)没有任何本地提交的历史记录.
我知道会hg update -C
覆盖任何本地更改.但是如何删除任何本地提交?
要清楚,我没有兴趣保留我在当地完成的任何工作.我只想要最简单的方法来恢复到完全干净的本地结账.
我正在尝试更新GitHub上的Git存储库.我做了一些更改,添加了它们,然后尝试做了一个git push
.回复告诉我一切都是最新的,但显然不是.
git remote show origin
Run Code Online (Sandbox Code Playgroud)
用我期望的存储库响应.
为什么当存在在存储库中看不到的本地提交时,Git告诉我存储库是最新的?
[searchgraph] git status
# On branch develop
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Capfile
# config/deploy.rb
nothing added to commit but untracked files present (use "git add" to track)
[searchgraph] git add .
[searchgraph] git status
# On branch develop
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: Capfile
# …
Run Code Online (Sandbox Code Playgroud) 我怎样才能git push
不仅推送到origin
另一个远程存储库?
因为git push
它只是一个别名git push origin
,我可以将git push命名为同时推送到2个远程存储库(只用那个命令)吗?
我不是在寻找一个非git脚本,但是想在git中为我的本地存储库设置它.
当我用推后脚本尝试它时,我失败了.
我已经重命名了几个文件git mv
,使用git stash
过,快速查看了HEAD(没有更改它),然后又git stash pop
重新获得了全部.我的动作已经从提交列表中消失了,所以我重新使用它们git rm
并且提交消息声称git发现重命名是重命名.所以我没想到它.
但是现在,提交后,我无法获取移动文件的历史记录!以下是git对有关提交的说法:
~/projects% git log --summary
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
delete mode 100644 test/R_DebugUI_iOS.h
delete mode 100644 test/R_DebugUI_iOS.m
create mode 100644 system/runtime/src/R_DebugUI_iOS.h
create mode 100644 system/runtime/src/R_DebugUI_iOS.m
<<snip older commits>>
~/projects%
Run Code Online (Sandbox Code Playgroud)
我现在正试图获取其中一个移动文件的历史记录,所以我可以看一个旧版本,但我没有得到任何非常有用的东西:
~/projects/system/runtime/src% git log --follow --find-copies-harder -M -C R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
~/projects/system/runtime/src%
Run Code Online (Sandbox Code Playgroud)
(我也尝试过没有 …