草庐IT

git - 如何压缩中间有 merge 提交的提交?

我正在开发一个功能分支。做出了几次promise。压缩提交。将更改推送到远程分支。有冲突。merge来自master的更改,解决功能分支上的冲突。gitfetchoriginmastergitmergeFETCH_HEAD手动解决冲突。gitcommitgitpush我又做了一个promise。所以,当前的提交历史看起来是这样的。从现在到旧:提交3提交Myyy(merge)提交2在将我的功能分支merge到master之前,如何将3个以上的提交压缩为1个? 最佳答案 假设功能分支名为feature,主分支名为main:从main创建

git - 防止在 master 分支中提交

(为简单起见)我的Git存储库中有一个master分支和一个dev。我想确保master分支始终正常工作,所以我所做的所有工作都应该在dev分支中进行。但是,当我将更改merge到--no-ffmerge时,我倾向于留在master分支中,并继续在其中工作(因为我忘记检查我的dev分支)。我可以为master分支制定一条规则,声明我不能提交和快进merge,但只能--no-ff从另一个分支merge?这必须适用于私有(private)托管存储库(因此,不适用于GitHub或Bitbucket)。 最佳答案 是的,这是可能的。您必须创

git - 防止在 master 分支中提交

(为简单起见)我的Git存储库中有一个master分支和一个dev。我想确保master分支始终正常工作,所以我所做的所有工作都应该在dev分支中进行。但是,当我将更改merge到--no-ffmerge时,我倾向于留在master分支中,并继续在其中工作(因为我忘记检查我的dev分支)。我可以为master分支制定一条规则,声明我不能提交和快进merge,但只能--no-ff从另一个分支merge?这必须适用于私有(private)托管存储库(因此,不适用于GitHub或Bitbucket)。 最佳答案 是的,这是可能的。您必须创

git - ORIG_HEAD、FETCH_HEAD、MERGE_HEAD 等

有很多有用的git引用资料(这个的确切名称是什么?),例如HEAD、ORIG_HEAD、FETCH_HEAD、MERGE_HEAD、@{upstream}等这个有引用资料吗?带有解释的完整列表? 最佳答案 githelprevisions调出http://git-scm.com/docs/gitrevisions,它描述了所有引用提交的最常见方式:HEAD命名您在工作树中基于更改的提交。FETCH_HEAD记录您使用上次gitfetch调用从远程存储库获取的分支。ORIG_HEAD是由以剧烈方式移动您的HEAD的命令创建的,以在操作

git - ORIG_HEAD、FETCH_HEAD、MERGE_HEAD 等

有很多有用的git引用资料(这个的确切名称是什么?),例如HEAD、ORIG_HEAD、FETCH_HEAD、MERGE_HEAD、@{upstream}等这个有引用资料吗?带有解释的完整列表? 最佳答案 githelprevisions调出http://git-scm.com/docs/gitrevisions,它描述了所有引用提交的最常见方式:HEAD命名您在工作树中基于更改的提交。FETCH_HEAD记录您使用上次gitfetch调用从远程存储库获取的分支。ORIG_HEAD是由以剧烈方式移动您的HEAD的命令创建的,以在操作

git - Bitbucket:更新 fork 以 merge master repo 的更改?

我正在使用我具有只读访问权限的bitbucketgit存储库,因此我创建了一个分支来处理我的功能。问题:如何更新我的复刻以包含所有者对原始存储库所做的更改?在github上,似乎必须执行以下操作,所以我怀疑它与此类似:$gitremoteaddupstreamgit://github.com/octocat/Spoon-Knife.git$gitfetchupstream$gitmergeupstream/master我在BitbucketDocumentationforforking中找不到任何相关信息 最佳答案 就像GitHub

git - Bitbucket:更新 fork 以 merge master repo 的更改?

我正在使用我具有只读访问权限的bitbucketgit存储库,因此我创建了一个分支来处理我的功能。问题:如何更新我的复刻以包含所有者对原始存储库所做的更改?在github上,似乎必须执行以下操作,所以我怀疑它与此类似:$gitremoteaddupstreamgit://github.com/octocat/Spoon-Knife.git$gitfetchupstream$gitmergeupstream/master我在BitbucketDocumentationforforking中找不到任何相关信息 最佳答案 就像GitHub

git - merge (无分支)到 master

dave@dave-dev:/media/dev/belgravia$gitbranch*(nobranch)master我不确定这是怎么发生的,但是有什么方法可以将无分支merge到主分支中。当其中一个不是分支时,我不确定如何merge两个分支。无分支中的提交似乎是松散的。恐怕checkoutmaster会导致数据丢失。 最佳答案 使用gitshow获取当前HEAD的SHA1提交ID。有了这些信息,您就不会丢失这些提交。然后,切换到master并:gitmergeabc123其中abc123是第一步的SHA1。

git - merge (无分支)到 master

dave@dave-dev:/media/dev/belgravia$gitbranch*(nobranch)master我不确定这是怎么发生的,但是有什么方法可以将无分支merge到主分支中。当其中一个不是分支时,我不确定如何merge两个分支。无分支中的提交似乎是松散的。恐怕checkoutmaster会导致数据丢失。 最佳答案 使用gitshow获取当前HEAD的SHA1提交ID。有了这些信息,您就不会丢失这些提交。然后,切换到master并:gitmergeabc123其中abc123是第一步的SHA1。

svn - 处理重命名 : svn vs. git 与 mercurial

这些VCS如何处理重命名?我发现了很多相互矛盾的信息,指出git跟踪LOC(代码行)而不是文件,因此重命名对它没有任何意义。 最佳答案 Git根本不跟踪重命名,而是在merge等过程中使用启发式方法重新发现它们。Mercurial跟踪重命名(记录原始版本和原始文件)并在merge期间使用该信息。因此,您必须使用hgmv明确告诉hg重命名,或使用hgaddremove--similarity进行自动发现。也有一些关于在merge期间添加启发式方法的讨论。Svn跟踪重命名,但我不知道它在merge期间处理这些重命名的效果如何(从未实际测