相关疑难解决方法(0)

将Git分支合并到master中的最佳(也是最安全)方法是什么?

master创建了一个新的分支,我们称之为test.

有几个开发人员要么提交master或创建其他分支,然后再合并master.

假设工作test需要几天时间,并且您希望不断test更新内部提交master.

我会做git pull origin mastertest.

问题1:这是正确的方法吗?其他开发人员可以轻松地处理相同的文件,就像我工作顺便说一句.


我的工作test已经完成,我准备把它合并回来master.以下是我能想到的两种方式:

A:

git checkout test
git pull origin master
git push origin test
git checkout master
git pull origin test 
Run Code Online (Sandbox Code Playgroud)

B:

git checkout test
git pull origin master
git checkout master
git merge test
Run Code Online (Sandbox Code Playgroud)

我没有使用,--rebase因为根据我的理解,rebase将从中获取更改master并将其叠加在其上,因此它可以覆盖其他人所做的更改.

问题2:这两种方法中哪一项是正确的?那有什么区别?

所有这一切的目标是让我的test分支更新所发生的事情,master然后我可以将它们合并回master希望保持时间线尽可能线性.

git git-merge branching-and-merging git-branch

1977
推荐指数
10
解决办法
142万
查看次数

Git:如何压缩分支上的所有提交

我创建了新的分支master:

git checkout -b testbranch

我做了20次提交.

现在我要压缩那20个提交.我这样做:

git rebase -i HEAD~20

如果我不知道有多少提交怎么办?有什么方法可以做以下事情:

git rebase -i all on this branch

git version-control

241
推荐指数
15
解决办法
13万
查看次数

恢复git中的一系列提交

如何在git中恢复一系列提交?从查看gitrevisions文档,我看不出如何指定我需要的范围.例如:

A -> B -> C -> D -> E -> HEAD
Run Code Online (Sandbox Code Playgroud)

我想做相同的:

git revert B-D
Run Code Online (Sandbox Code Playgroud)

结果将是:

A -> B -> C -> D -> E -> F -> HEAD
Run Code Online (Sandbox Code Playgroud)

其中F包含BD的反向.

git range revert

109
推荐指数
3
解决办法
5万
查看次数

我应该使用docker-compose还是运行?

是否有理由使用run启动docker-compose.yml文件或者您应该使用up

我知道run可以启动一个特定的容器,但我指的是你在没有指定容器的情况下使用它的情况,以便启动所有的yml容器.

docker docker-compose

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

'ssh-keygen'未被识别为内部或外部命令

我跑 git push -u origin master

它告诉我"权限被拒绝(公钥)致命:远程端意外挂断"

然后我查了一下互联网,发现我必须在GitHub上为我的帐户生成一个ssh密钥.但是,这样做的时候,当我尝试做ssh-keygen -t rsa"email@youremail.com"时,它只是说ssh-keygen无法识别.我尝试过做mkdir C:\ ssh但是没有用.如果它有助于我使用Ruby Rails并且我在Windows计算机上.谁能帮助我?

windows git ssh github

100
推荐指数
7
解决办法
21万
查看次数

GitHub pull请求显示已经在目标分支中的提交

我正在尝试将GitHub上的拉取请求检查到非主的分支.目标分支在master之后,pull请求显示master的提交,所以我合并master并将其推送到GitHub,但是它们的提交和差异仍然在刷新后出现在pull请求中.我加倍检查GitHub上的分支是否有来自master的提交.为什么他们仍然出现在拉动请求中?

我还在本地检查了pull请求,它只显示了未合并的提交.

git merge commit github pull-request

99
推荐指数
10
解决办法
5万
查看次数

修剪Git提交/压缩Git历史

我每隔几分钟就会将我的代码检查到一个Git分支中,并且评论最终会变成"Everything broken again again"和其他荒谬.

然后,每隔几分钟/小时/天,我会做一个真正的评论,比如"修正了第22,55号错误".我如何区分这两个概念?我希望能够删除所有我的频繁提交,然后离开严肃的提交.

git branch

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

为github pull请求只压缩一次"正确"提交

我在github上有一个回购,其他人(Bob,为了争论)发出了拉请求.他的代码不完美,所以我们经历了几轮标记.据我了解,他承诺并推动他对每组标记变更的拉动请求.

所以我的存储库现在看起来像这样:

master: ---o A (Chowlett
           |
           |
pull-req:  o---o---o---o
               B   C   D (all Bob)
Run Code Online (Sandbox Code Playgroud)

提交SHA和消息如下:

A:

123456 Good commit <chowlett>
Run Code Online (Sandbox Code Playgroud)

B:

777ccc Fix the widget bug <bob>
Run Code Online (Sandbox Code Playgroud)

C:

888ddd Review markups <bob>
Run Code Online (Sandbox Code Playgroud)

d:

999eee Further markups <bob>
Run Code Online (Sandbox Code Playgroud)

我现在很高兴接受这个拉动请求; 但我宁愿预标记版本不在我的回购中.我可以实现以下所有目标吗?如何?

  • 将B,C&D合并为我的仓库作为单个提交
  • 生成"合并拉取请求#99到..."提交
  • 让github自动关闭拉取请求

git github pull-request

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

为什么我要一遍又一遍地解决同样的冲突?

当我这样做时git rebase branch1,我branch1-local会发生冲突.我解决了冲突,做了git add <conflicted-add>然后git rebase --continue就像git要求我做的那样.之后,将应用新的提交.出现了新的冲突.但是再次发生同样的冲突!同一个文件!我再这样做,git addgit rebase --continue,然后这一切再次重复,直到我重复这一过程,每次提交被重建基础上.

为什么rebase让我一遍又一遍地重做同样的冲突解决方案?

git version-control git-rebase

42
推荐指数
2
解决办法
9048
查看次数

Git反复合并壁球

我试图在git中有两个带有二进制文件的分支 - 一个"开发"和一个"稳定".在我想要将它们"释放"到稳定分支之前,开发分支可以对这些文件进行多次更改(并且如果相关,则稳定分支重命名这些文件).

我可以做一个正常的合并,这很好,但保留了太多的历史 - 当拉动"稳定"分支时,所有来自"开发"分支的中间提交也被拉出(因为它们是父提交).但是我们讨论的是没有任何合理的合并策略的二进制文件(除了他们/我们的),因此开发分支上的文件的实际历史是无用的.当我拉"稳定"分支时,我得到了这个:

          X-------------------G stable
         /                   /
    a---b---c---d---e---f---g development

因为G在开发分支中有一个父项,所以我在我的存储库中得到了开发分支的全部历史记录(c,d,e,f和g的数据对象),我对此并不感兴趣(X与b,应用了一些文件重命名).

所以我尝试git merge --squash从开发分支更改为稳定分支.第一次这样的合并和提交就行了,结果如预期的那样(提交消息中的改变日志很好,与开发分支无关):

          X-------------------G stable
         /                   
    a---b---c---d---e---f---g development

拉完这个压扁的稳定分支后,我在我的存储库中得到了这个,这就是我想要的:

a---b---X---G

但是第二次合并失败了(因为git无法知道我已经合并了多少并且感到困惑).

  • 是否有可能以某种方式记录合并,而不会与两个父母产生"合并提交"?
  • 或者,是否有可能告诉git只合并某个"范围"的修订版,比如在SVN中?
  • 或者,是否可以进行正常合并而不必在拉动时从其他分支下载所有引用?
  • 或者我应该为有问题的文件提供自定义合并驱动程序,只需将"他们的"版本重命名为"我们的",从而解决冲突?我仍然害怕--squash总是试图将整个历史合并到普通的父母,只解决我问题的一半.

更新:变基

如果我理解正确的变形,我会最终得到这个:

                              X stable
                             /
    a---b---c---d---e---f---g development

这让我得到了我不感兴趣的所有数据(c,d,e,f),作为奖励,我将丢失b是分支中稳定版本的信息.

每个开发版本都会增加大约5MB的存储库大小(并且重新打包整个repo只会缩小大约10%),"稳定"分支几乎是免费的(数据已经存在).我想从稳定分支中拉出一个新的版本,只拉新的5MB,而是从X更新到G下载25MB,因为我不知道我不知道我不关心c,d的内容,e和f.

git version-control merge

29
推荐指数
2
解决办法
8771
查看次数