相关疑难解决方法(0)

如何将更改的文件添加到Git中的旧(不是最后)提交

我在过去一小时内改变了一些事情,并一步一步地提交了它们,但我刚刚意识到我忘了在一些提交之前添加一个已更改的文件.

日志看起来像这样:

GIT TidyUpRequests u:1 d:0> git log 
commit fc6734b6351f6c36a587dba6dbd9d5efa30c09ce 
Author: David Klein <> 
Date:   Tue Apr 27 09:43:55 2010 +0200

    The Main program now tests both Webservices at once

commit 8a2c6014c2b035e37aebd310a6393a1ecb39f463 
Author: David Klein <>
Date:   Tue Apr 27 09:43:27 2010 +0200

    ISBNDBQueryHandler now uses the XPath functions from XPath.fs too

commit 06a504e277fd98d97eed4dad22dfa5933d81451f 
Author: David Klein <> 
Date:   Tue Apr 27 09:30:34 2010 +0200

    AmazonQueryHandler now uses the XPath Helper functions defined in XPath.fs

commit a0865e28be35a3011d0b6091819ec32922dd2dd8 <--- changed file …
Run Code Online (Sandbox Code Playgroud)

git

405
推荐指数
4
解决办法
8万
查看次数

Git分支模型适合您?

我们公司目前正在使用简单的主干/发布/修补程序分支模型,并希望了解哪些分支模型最适合您的公司或开发过程.

  1. 工作流程/分支模型

    以下是我所看到的三个主要描述,但它们彼此部分相互矛盾,或者不足以解决我们遇到的后续问题(如下所述).因此,我们的团队到目前为止默认不是那么好的解决方案.你做得更好吗?

  2. 合并与变基(纠结与连续历史)

    是应该pull --rebase还是等待合并回到主线直到你的任务完成?我个人倾向于合并,因为这保留了一个任务开始和完成的基础的视觉图示,我甚至更喜欢merge --no-ff这个目的.然而,它有其他缺点.还有许多人没有意识到合并的有用属性 - 它不是可交换的(将主题分支合并到master中并不意味着将master合并到主题分支中).

  3. 我正在寻找一个自然的工作流程

    有时会发生错误,因为我们的程序无法通过简单的规则捕获特定情况.例如,早期版本所需的修复当然应该足够下游,以便可以将上游合并到所有必要的分支中(这些术语的使用是否足够清楚?).然而,在开发人员意识到它应该被放置在更下游之前,并且如果已经推送(更糟糕的是,合并或基于它的某些东西)之后,修复使其成为主人,那么剩下的选项就是挑选,其相关的危险.您使用了哪些简单的规则?同样在这包括一个主题分支的尴尬必然排除其他主题分支(假设它们从共同基线分支).开发人员不希望完成一个功能来启动另一个功能,感觉就像他们刚写的代码不再存在

  4. 如何避免创建合并冲突(由于挑选)?

    创建合并冲突的可靠方法似乎是在分支机构之间进行挑选,它们永远不会再次合并?在任一分支中应用相同的提交(如何执行此操作?)可能会解决这种情况?这是我不敢推动基于合并的工作流程的一个原因.

  5. 如何分解成外用分支?

    我们意识到从主题分支组装完成的集成是很棒的,但是我们的开发人员经常工作没有明确定义(有时像"戳"一样简单),如果某些代码已经进入"misc"主题,根据上面的问题,它不能再被带出去了吗?您如何使用定义/批准/毕业/发布您的主题分支?

  6. 代码审查和毕业等适当的程序当然是可爱的.

    但是我们根本无法保持足够的东西来管理这个 - 任何建议?整合分支,插图?

以下是相关问题列表:

还要看看Plastic SCM在任务驱动开发上写的内容,如果不是Plastic的选择,请研究nvie的分支模型及其支持脚本.

git merge workflow release cherry-pick

371
推荐指数
3
解决办法
6万
查看次数

在git中,merge --squash和rebase之间有什么区别?

我是git的新手,我正在努力理解壁球和篮板之间的区别.根据我的理解,你做一个篮板时做一个壁球.

git merge rebase git-rebase squash

336
推荐指数
5
解决办法
13万
查看次数

合并:Hg/Git与SVN

我经常读到Hg(和Git和......)在合并方面比SVN更好但是我从未见过Hg/Git可以合并SVN失败的地方(或者SVN需要人工干预的地方)的实际例子.您可以发布一些分支/修改/提交/ ....-操作的逐步列表,显示SVN在Hg/Git愉快地移动时会失败的位置吗?实用,非常特殊的情况请...

一些背景:我们有几十个开发人员在使用SVN进行项目,每个项目(或一组类似项目)都在自己的存储库中.我们知道如何应用发布和功能分支,所以我们不会经常遇到问题(即,我们一直在那里,但我们已经学会克服Joel的问题 "一个程序员给整个团队造成创伤"或"需要六个开发人员两周才能重新整合分支机构").我们的发布分支非常稳定,仅用于应用错误修正.我们的中继线应该足够稳定,能够在一周内创建发布.我们还有一些开发人员或开发人员可以使用的功能分支.是的,它们在重新集成后被删除,因此它们不会使存储库混乱.;)

所以我仍然试图找到Hg/Git优于SVN的优势.我很想获得一些实践经验,但目前还没有任何我们可以移动到汞/ GIT中还没有更大的项目,所以我坚持用只含有少量由文件小型人工玩的项目.而且我正在寻找一些你可以感受到Hg/Git令人印象深刻的力量的案例,因为到目前为止我经常读到它们但却未能自己找到它们.

svn git merge mercurial dvcs

143
推荐指数
5
解决办法
2万
查看次数

Git rebase失去了历史,然后为什么会变质呢?

在过去的几天里,我一直在考虑与Git进行变革.反驳的大多数论据都说它清理历史并使其更加线性.如果您进行简单合并(例如),您将获得一个历史记录,显示历史记录何时分歧以及何时将其重新组合在一起.据我所知,rebasing删除了所有历史记录.问题是:为什么你不希望回购历史反映代码开发的所有方式,包括它在哪里以及如何分歧?

git version-control git-merge git-rebase

47
推荐指数
3
解决办法
1万
查看次数

合并GIT分支而不提交日志

目前,当我使用GIT时,我为每个作业创建一个分支,并在完成之前进行各种提交.然后我与我的主分支合并并向上游推送.我可能在任何时候都有几个分支机构,并且在工作中间随着事情的发生而轻弹.

但是大多数这些提交只是保存点,即在宏观方案中并不重要.因此,当我合并分支时,如果分支日志没有与主日志合并,我会喜欢它.

有没有办法合并下面提交g的日志消息(而不是提交c或e)?

a [master] 
|
b (create branch 'job')
|\
| \
|  c 
|  |
d  e
|  |
f  g (next step is to merge 'job' branch with 'master')
Run Code Online (Sandbox Code Playgroud)

git merge

41
推荐指数
2
解决办法
3万
查看次数

在没有Rebase的情况下重做GIT中的提交历史记录

自从我的最后一个问题被证实是关于GIT的变基,我已经决定我根本不想变基.相反,我想:

  1. 工作工作,随时检查和推动
  2. 抛弃所有这些提交并假装它们从未发生过(所以在工作结束时一个干净的提交)

我目前通过将文件复制到新目录然后将它们复制回新分支(与我的工作分支在同一点分支),然后将其合并到master任何地方.

这只是简单的坏事,为什么?更重要的是:有没有更好的/ GIT方式来做到这一点? git rebase -i迫使我合并(并挑选和压缩).

git rebase

21
推荐指数
2
解决办法
7234
查看次数

Git:Stage into Commit,什么是正确的工作流程?

我刚刚在几个单独的提交中创建了一大段代码.
所以我可以进行相关部分,提交,阶段,提交......等等,直到我提交了所有更改.

缺少的部分是我如何测试我是否正确分割提交.
也就是说,临时区域中的部分是否至少编译?

为此,我必须以某种方式使我的工作树与索引(临时区域)保持同步,而不会丢失稍后要提交的更改.

正确的方法是什么?
什么是最快的做到这一点呢?

更新:
如何用magit做到这一点?

git split commit staging

21
推荐指数
1
解决办法
2万
查看次数

如何避免在git中进行小的更改?

我想知道,我怎么能避免在很小的代码更改中提交.例如,有时我会错过参数之间的空格或那种微小的代码格式.我问这个的原因是因为后来我必须将我的提交推送到远程存储库,我不想包含那些小的更改.

有任何想法吗?谢谢

git commit

12
推荐指数
2
解决办法
3941
查看次数

如何自定义git rebase --interactive commit messages的格式?

我使用git进行本地工作(并且非常喜欢它),我遵循类似于本文所述的工作流程.所以基本上,当开始一个新功能时,我为它创建一个分支,经历通常的hack然后提交循环,当我认为我已经完成它时,我将它压缩到单个提交中git rebase --interactive master,并且我总是结束将大量的提交消息编辑成类似文章中的示例,在此处转载:

[#3275] User Can Add A Comment To a Post

* Adding Comment model, migrations, spec
* Adding Comment controller, helper, spec
* Adding Comment relationship with Post
* Comment belongs to a User
* Comment form on Post show page
Run Code Online (Sandbox Code Playgroud)

当然,这是在每个提交消息前面的一堆删除# This is the xth commit message行和复制/粘贴*之后.

现在,我想知道,有没有办法定制git rebase -i如何输出压缩的提交消息,所以我不必做所有的黑客攻击?

(我使用msysgit,如果这很重要.我的编辑器是Notepad ++.)

谢谢!

git msysgit

11
推荐指数
2
解决办法
1671
查看次数