2013-09-25 58 views
4

我的团队最近从ClearCase迁移到Git。一些团队成员习惯于劫持文件,这些文件在ClearCase中意味着对被跟踪的文件进行私人更改,这些更改不会与任何人共享。什么是ClearCase劫持的Git等价物?

当做相当于Git添加/提交时,ClearCase基本上会忽略这些文件,并且在执行等价的Git pull时不会覆盖它们。

Git中是否有等价物?

注意我并不是说这是一个很好的工作流程,即使在ClearCase世界也是如此。 “你为什么想要”的答案是,这是他们习惯的。

回答

4

的“hijacked”的最接近将是您指定的git的指数,它有被忽略文件:
(请参阅“Git: untrack a file in local repo only and keep it in the remote repo”)

git update-index --assume-unchanged -- afile. 

文件仍然版本,但你所做的任何修改都不会显示在git status之内,并且不会被提交(显然不会被推送)

+1

其他可能的解决方案:http://stackoverflow.com/a/ 13928481/6309'git update-index --skip-worktree - aFile' – VonC

+0

我将不得不investi选择两个选项。它看起来像'--assume-unchanged'对'add -u'和'commit -a'具有期望的效果,但是它或者'--skip-worktree'允许拉取成功(跳过标记的文件),所以推动不会被拒绝? – gatkin

+0

@gatkin实际上并不确定:你在这里解释了两者之间的区别:http://stackoverflow.com/a/13631525/6309。 'skip-worktree'似乎抵制藏匿(http://stackoverflow.com/questions/18393567/git-hook-for-any-action-that-updates-the-working-directory?lq=1#comment27019296_18393567) 。 – VonC

-1

您可以随时进行更改,然后不提交它们。当你拉/合并/提交/结帐时,这些改变会“浮动”;如果您尝试做一些可能会覆盖它们的内容(例如,您合并了接触同一文件的更改),则它会拒绝 - 此时您可以更改,执行操作,然后git stash (apply|pop)恢复您的更改。

如果你想这些变化实际上致力于本地,但不会与其他人分享,我想你最好的选择是保持他们对你衍合到本地分支(或跟上合并)分支机构的“实际开发“发生,并且注意不要实际推送包含本地更改的提交。