标签: git-rebase

是否有可能通过在推送之前拉取他的分支、变基并删除他的提交来搞乱同事的代码?

我对 git 有点陌生,试图了解分支/rebase 是如何工作的,以及是否有可能我搞砸了一些事情。

我和我的同事都在不同的分支机构,我需要他为我的工作所做的改变。所以我拉了他的改变。然后我做了

git rebase -i HEAD~3 
Run Code Online (Sandbox Code Playgroud)

并删除了我不需要的他的提交。然后我向我们的存储库推送并创建了一个拉取请求,一切看起来都很好。看起来就像是我需要他的更改和我自己的更改的一项提交。

我还没合并呢 是否有可能一旦他合并,然后我合并,不知何故,因为我删除了他在我正在合并的分支上的提交,它删除了他的代码?

git rebase git-rebase

1
推荐指数
1
解决办法
646
查看次数

如何用远程覆盖本地历史记录?

最近,由于几次错误的提交,我不得不压缩提交。简单地这样git pull --rebase origin master做对我来说是有效的,但我的队友已经在旧历史之上合并了新历史。所以我想知道是否有可能覆盖本地历史?

假设分支中有三个时间线remoteNewlocalOld并且localNew有一个小时前的提交。

追随作品,用新的历史完全覆盖旧的历史。不过这里需要注意的是,oldHistory 在 newHistory 创建后没有新的提交。

git checkout localOld
git pull --rebase origin remoteNew
Run Code Online (Sandbox Code Playgroud)

以下并不如我所愿。它没有覆盖本地历史,而是创建了带有冲突的合并。

git checkout localNew
git pull --rebase origin remoteNew
Run Code Online (Sandbox Code Playgroud)

我相信这种情况发生是因为本地有新的提交。虽然我真正想要的是git push --force类似的结果,但为了拉动。另一种方法是将 master 分支替换为新分支并重命名。还有其他选项可以覆盖本地历史记录吗?

注意:想澄清一下,这是旧的存储库,但团队尚未对其进行处理,我们正处于采用 git 并在整个团队开始处理它之前完成工作流程的初始阶段。

git git-pull git-rebase

1
推荐指数
1
解决办法
2890
查看次数

git rebase -i HEAD~N 返回超过 N 次提交

这是我的 git 命令:

git rebase -i HEAD~2

我希望看到最近的 2 个提交,但我看到的是:

在此输入图像描述

我还想提一下,虽然我一直在尝试压缩某些提交,但我始终遇到合并冲突。我感觉这些问题可能是相关的。

我是一个 git 菜鸟,所以任何帮助将不胜感激。

git log --graph --all --oneline --decorate在此输入图像描述

提交链:

在此输入图像描述

git git-rebase

1
推荐指数
1
解决办法
5347
查看次数

GitHub 没有显示我提交的正确日期,因为它们存储在本地

我已经重新调整了我的承诺以更改其日期,现在它在本地显示正确的日期。然后,我决定删除远程存储库,并以正确的日期从头开始重新发布。但是,我惊讶地发现我已经重新设定的所有提交日期都具有相同的重新设定时间日期!

这是本地提交的屏幕截图: 在此输入图像描述

您可以在我的公共存储库上查看提交历史记录: https ://github.com/Mohammed-Sharaf-Eddeen/epl-dashboard/commits/master

git github git-rebase

1
推荐指数
1
解决办法
620
查看次数

为什么与两个提交者共享的git分支有两次提交多次?(可能与git-svn交互)

当我设置我的分支时,我做了:

git svn rebase
git checkout -b branch-a
Run Code Online (Sandbox Code Playgroud)

然后我把那个分支到远程的Git仓库和一个同事和我没有使用它的工作git commit,git pullgit push.

现在,我想从subversion中获取所有新的更改,所以我做了:

git checkout master
git svn rebase
git checkout branch-a
git rebase master
Run Code Online (Sandbox Code Playgroud)

此时我很困惑.似乎发生的事情是git会在一次或多次冲突中提交并迫使我解决它们.然而,冲突似乎是git让HEAD指向树的尖端(使用最新的代码),然后尝试逐个应用每个更改,就好像它将它们应用于原始分支点一样.

感觉就像我重新编写所有代码一样,大部分解决方案都是保留HEAD块并摆脱提交块.

我的期望是git rebase master命令将在分支之前的提交处开始,从master添加每个提交,然后在分支上添加每个提交.然后,这将在分支上产生与尖端之前几乎相同的尖端.

那么,任何人都可以解释我无法理解的内容.如果做不到这一点,任何人都可以建议如何找出为什么git决定这样做.我会在寻找什么git log,看看它为什么这样做.

编辑:2012-03-06 进一步的研究表明,我们似乎在我们的分支和分支结构中有多个提交的多个副本,git log --graph当我们认为只有一个时,从中显示多个分支.

一个片段(鉴定去除细节和提交信息已被替换为MESSAGE- Ñ MESSAGE-.Ñ是指相同的消息):

| * | commit f5c48df66ed9d733364562d8f125866aa6483c1e
| | | Author: commiter-b
| | | Date:   Mon Feb 27 16:18:05 2012 -0800
| | | 
| | …
Run Code Online (Sandbox Code Playgroud)

git git-svn git-rebase

0
推荐指数
1
解决办法
200
查看次数

为什么'git rebase'保留了重新分支的历史?

据我所知,从http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html,重新分支的分支被"移动"到另一个分支.

但是,我在测试中看到的结果表明,来自重新分支的分支的提交仍然在历史中,因此它们实际上是重复的.

在变基之前:

变基后:

也许我遗漏了一些东西或完全不了解rebase的目的或两者兼而有之.

如果我看到的是预期的行为,那为什么会这样呢?

git git-rebase

0
推荐指数
2
解决办法
192
查看次数

在不改变历史的情况下将我的提交重新授予master

我有一个功能分支和一个主分支.我的功能分支已从主分支中检出,但在当前主分支上的某些提交之前.

我想在主分支上重新提交我的提交,但我不希望主人的历史发生变化,我希望rebase一举应用所有提交并保持repo历史的完整性远程分支.

这可能与git rebase有关吗?

在主人身上这样做

git rebase feature-branch-name

重播我的功能分支上的主人历史,这不是我的意图.

git rebase git-rebase

0
推荐指数
1
解决办法
132
查看次数

承诺没有出现在历史中

我犯了一个错误,现在我的提交没有出现在历史记录中。我在只读模式下签出了一个远程分支(实际上没有切换到创建本地分支的那个分支)。我做了 3 次提交,没有再次检查 master。

我想将这些提交重新设置为 master,但它们没有出现在历史记录中。我该怎么做?

git git-rebase

0
推荐指数
1
解决办法
1059
查看次数

为什么我不能将提交合并为一个?

好.我最终试图找出为什么我不能将两个提交合并为一个.Git非常复杂.我有一系列在本地和远程看起来像这样的提交:

commit 6abb264c06b06d42ea7e07a469107b9d3d72dffa
Author: XXXX <xxx@xxxx.xxx>
Date:   Thu Jan 23 15:59:03 2014 -0500

   First Check-in again (forgot to add project file and forgot to tick off append to last commit)


commit 90b2468f5267a471d52f2d7cc7cb1cd8604b3b86
Author: XXXX <xxx@xxxx.xxx>
Date:   Wed Jan 22 22:57:20 2014 -0500

   First check-in 
Run Code Online (Sandbox Code Playgroud)

我想将它们组合在一起,看起来像这样:

commit 90b2468f5267a471d52f2d7cc7cb1cd8604b3b86
Author: XXXX <xxx@xxxx.xxx>
Date:   Wed Jan 22 22:57:20 2014 -0500

   First check-in 
Run Code Online (Sandbox Code Playgroud)

我尝试使用pick,squash和任何可用的葫芦命名无效.它告诉我它已经压缩/合并/挑选了什么,但我总是看到两个提交而不是一个.

也无法弄清楚挑选和壁球之间的区别.另外,我无法分辨提交和分支之间的区别.而且,我读到一个分支只是一个提交,但为什么我们必须合并分支但是选择/压缩(??)提交?这非常令人困惑.

git git-rebase git-commit

0
推荐指数
1
解决办法
602
查看次数

Git rebase交互式错误

我想合并我的分支(让我们称之为my_branch)来掌握.它有一个文件在我的github.com上的pull请求中显示为合并冲突.在重新定位之前我想要压缩我的提交(11次提交).所以我做了这样的事情:

# On master
git pull
git checkout my_branch
# on my_branch
git fetch
git rebase -i origin/master
Run Code Online (Sandbox Code Playgroud)

这打开了一个vim编辑器,我的所有提交 - 我保留了第一个,pick并将其余部分更改为s (squash)

pick commit1
s commit2
s commit3
.
.
.
s commit 11
Run Code Online (Sandbox Code Playgroud)

当我保存并退出时,我收到错误 - error: could not apply e7ce468... 'commit1 message'

任何人都可以向我解释问题是什么?我知道我不能因为挤压而变废,因为每一次提交都需要解决.

git git-rebase git-squash

0
推荐指数
1
解决办法
895
查看次数

标签 统计

git ×10

git-rebase ×10

rebase ×2

git-commit ×1

git-pull ×1

git-squash ×1

git-svn ×1

github ×1