Questions tagged «version-control»

版本控制是对文档,程序和其他存储为计算机文件的信息的更改的管理。使用此标记可以标记有关版本控制,VCS比较的用法和适用性的一般问题。对于特定于每个特定VCS的大多数命令和技术,都有特定的标签,应该优先使用。

7
删除所有本地变更集并还原为树
我正在使用Mercurial,在本地遇到了三个头的可怕混乱。我无法推送,我只想删除所有本地更改和提交,然后从完全干净的代码和干净的历史记录重新开始。 换句话说,我想得出的结果是(a)与远程分支的尖端完全相同的本地代码,以及(b)没有任何本地提交的历史记录。 我知道会hg update -C覆盖所有本地更改。但是,如何删除任何本地提交? 需要明确的是,我对保留在本地所做的任何工作都没有兴趣。我只想以最简单的方法还原到完全干净的本地结帐。

2
Git从另一个存储库中拉出
我有一个名为的存储库Generic,这是一个通用应用程序。我将其分叉到一个名为Acme的存储Generic库中,该存储库仅建立在应用程序存储的存储库的基础上,并向其添加了Acme Co品牌。 如果我对中的核心功能进行了更改,则Generic想Acme使用对中的核心功能进行的最新更改来更新存储库Generic。我该怎么做? 据我所知,我实际上是在尝试将上游存储库中所做的更改合并到当前fork中。 如果有任何意义,我正在尝试执行此操作,因为我有一个通用应用程序,可以Acme在此基础上构建该应用程序并为单个客户创建品牌(如本例所示)。如果有更清洁的方法,请告诉我。

30
签入“注释过的”代码[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 改善这个问题 好的,这是导致我目前工作出现摩擦的原因,我真的没想到会发生。内部软件开发的组织是这里的一个新概念,我已经草拟了一些编码准则的初稿。 我建议永远不要将“注释掉”的代码检入到存储库中。我之所以这样说是因为该存储库保留了文件的完整历史记录。如果要删除功能代码,则将其全部删除。存储库保留您的更改,因此很容易看到更改。 这引起了一些摩擦,因为另一位开发人员认为采用此方法过于严格。该开发人员希望能够注释掉他正在处理但不完整的一些代码。这样,该代码将永远不会被签入,然后再不保存在任何地方。我们将使用TFS,因此我建议搁置更改将是最正确的解决方案。但是,由于他希望能够检入可能部署或可能未部署的部分更改,因此不被接受。 我们希望最终达到一个可以充分利用持续集成优势并自动部署到开发Web服务器的地步。当前没有Web服务器或数据库服务器的开发版本,但是所有版本都将很快更改。 无论如何,您有什么想法?您是否认为“注释掉”的代码在存储库中有用吗? 我非常有兴趣听取其他人对此主题的意见。 编辑:为清楚起见,我们不使用私有分支。如果我们这样做了,那么我会说您想用您的私有分支做什么,但是永远不要将注释掉的代码与主干或任何共享分支合并。 编辑:没有正当理由,我们不使用私人或按用户分支。这不是我不同意的概念。我们只是还没有那样设置。也许那是最终的中间立场。目前,我们使用TFS搁板。

17
如何回退TFS登机手续?
我想回滚最近在TFS中所做的更改。在Subversion中,这非常简单。但是,这似乎在TFS中令人难以置信: 选项1:获取先前版本 手动获取每个文件的先前版本 签出进行编辑 失败-结帐(在VS2008中)迫使我获取最新版本 选项2:获取TFS电动工具 下载Team Foundation电动工具 从cmd行发出回滚命令 失败-如果还有其他待处理的更改,它将不起作用 选项3:手动撤消更改 手动撤消我的更改,然后提交新的更改集 题 如何回滚到TFS中的先前变更集?

6
为什么在Mercurial中分支和合并比在Subversion中更容易?
在Subversion或CVS中将多个合并处理到分支上只是必须经历的事情之一。在Mercurial(以及可能的任何其他分布式系统)中跟踪分支和合并非常容易,但是我不知道为什么。还有谁知道吗? 我的问题源于以下事实:Mercurial可以采用类似于Subversions / CVS中央存储库的工作方式,并且一切都会正常进行。您可以在同一个分支上进行多次合并,并且不需要无休止的纸屑,包括提交号和标签名。 我知道最新版本的Subversion具有跟踪合并到分支的能力,因此您不会遇到相同程度的麻烦,但是这对他们来说是一个巨大而重大的发展,并且仍然无法完成开发团队的所有工作喜欢做。 所有工作方式都必须有根本的区别。

3
'git pull origin mybranch'使本地mybranch N提交早于起源。为什么?
我只是发现一些奇怪的东西git pull,我不明白。 星期五,我在当地一家分公司工作。让我们称之为mybranch。在离开办公室之前,我把它推到原点(这是我的GitHub库)git push origin mybranch。 昨天在家,我将pullmybranch带到笔记本电脑上,做了一些编码,然后将所做的更改推回了github(起源)。 现在,我再次上班,并尝试将昨天的更改应用于我的工作计算机(周末我在工作场所的本地存储区中未进行任何更改): git pull origin mybranch 导致快速向前合并,这很好。然后git status,我做了一个,说: # On branch mybranch # Your branch is ahead of 'origin/mybranch' by 6 commits. # nothing to commit (working directory clean) ??当我什至在周末什至没有碰到它并且刚从起源中撤出时,怎么会有6次提交?所以我跑了一个git diff origin/mybranch,差异就是我刚刚从远程拉出的6个变化。 我只能通过运行“修复”此问题git fetch origin: From git@github.com:me/project af8be00..88b0738 mybranch -> origin/mybranch 显然,我的本地仓库缺少一些参考对象,但是那怎么可能呢?我的意思是,pull已经完成了获取,并且除了该分支外,我什么都没做,所以a git fetch …


3
重新安置分支机构,包括其所有子级
我有以下Git存储库拓扑: A-B-F (master) \ D (feature-a) \ / C (feature) \ E (feature-b) 通过重新feature分支,我希望重新构建整个子树(包括子分支): $ git rebase feature master A-B-F (master) \ D (feature-a) \ / C (feature) \ E (feature-b) 但是,这是实际结果: C' (feature) / A-B-F (master) \ D (feature-a) \ / C \ E (feature-b) 我知道我可以通过执行以下操作轻松地手动修复它: $ git rebase …


7
删除SVN分支
我创建了一个名为“功能”的SVN项目的分支,现在,每当我尝试更新所述项目时,它就会带来一个功能文件夹,其中包含该分支中项目的另一个副本。有没有一种方法可以从存储库中完全删除该分支,从而不再发生这种情况?


4
正确地递归地忽略除特定文件类型以外的特定文件夹下的所有文件
我已经看到了类似的问题(1,2和 3),但我不从他们那里得到一个妥善的解决办法。 除特定文件类型外,我需要忽略特定文件夹下的所有文件。该文件夹是根路径的子目录。让我命名该文件夹Resources。由于我不想使事情复杂化,因此让我忽略所有命名为所有文件夹的文件Resources。 这是最常见的解决方案(在所有重复的问题中) # Ignore everything * # Don't ignore directories, so we can recurse into them !*/ # Don't ignore .gitignore !.gitignore # Now exclude our type !*.foo 该解决方案的问题在于它停止跟踪新添加的文件(因为*忽略所有文件)。我不想一直排除每种文件类型。我想要正常的行为,如果添加了任何新文件,就会git status显示出来。 我终于在这里找到了解决方案。解决方法是.gitignore在Resources文件夹中添加另一个文件。这可以正常工作。 我可以使用一个忽略文件来达到相同的目的吗?我发现在不同目录中有许多忽略文件有点笨拙。 这是我要实现的目标: # Ignore everything under Resources folder, not elsewhere Resources # Don't ignore directories, so we …

8
git存储库在计算机之间同步时,何时移动?
假设我有一台台式电脑和一台笔记本电脑,有时我在台式机上工作,有时我在笔记本电脑上工作。 来回移动git存储库的最简单方法是什么? 我希望git存储库是相同的,这样我就可以在另一台计算机上我离开的地方继续。 我想确保两台计算机上都具有相同的分支和标签。 谢谢约翰 注意:我知道如何使用SubVersion做到这一点,但是我对git如何工作感到好奇。如果更简单,我可以将第三台pc用作经典服务器,两台pc可以同步。 注意:两台计算机都在运行Linux。 更新: 因此,让我们尝试XANI的想法:在服务器上使用裸露的git repo,并使用KingCrunch的push命令语法。在此示例中,有两个客户端和一个服务器。 因此,让我们首先创建服务器部分。 ssh user@server mkdir -p ~/git_test/workspace cd ~/git_test/workspace git --bare init 因此,然后我尝试从其他计算机之一获取带有克隆的回购副本: git clone user@server:~/git_test/workspace/ Initialized empty Git repository in /home/user/git_test/repo1/workspace/.git/ warning: You appear to have cloned an empty repository. 然后进入该仓库并添加一个文件: cd workspace/ echo "test1" > testfile1.txt git add testfile1.txt …

4
GitHub能否以补丁程序形式显示对一个文件所做的更改的历史记录?
如果这样做git log --patch -- path/to/file,您将获得文件的历史记录以及每次提交对该文件所做的所有更改的差异,如下所示: $ git log --patch -- git-rebase.sh commit 20351bb06bf4d32ef3d1a6849d01636f6593339f Author: Ramkumar Ramachandra <artagnon@gmail.com> Date: Sat Jun 15 18:43:26 2013 +0530 rebase: use 'git stash store' to simplify logic rebase has no reason to know about the implementation of the stash. In the case when applying the …

4
Git非快进被拒绝
我觉得这个问题已经被问过很多次了,但是解决方案通常是“我删除了目录,并重新进行了结帐。” 我进行了提交和推送,但是意识到我在提交消息中引用了错误的凭单号码。因此,我在SO上寻求一种快速解决方案,并最终在终端中输入了以下内容: $ git reset --soft HEAD^ $ git commit -m "... correct message ..." 唯一的问题是我收到以下错误消息: To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details. 我正在使用git-flow模型,并且正在开发分支。我怎样才能重新合并东西使git再次开心呢?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.