Git重复提交Intellij

nvbavucw  于 2022-10-23  发布在  Git
关注(0)|答案(1)|浏览(222)

我是git的新手,我正在尝试理解一些东西。
1.创建并 checkout 功能分支。
1.做出改变,提交并推动。

  1. checkout 主分支,进行更改,提交并推送。
    1.查看功能分支,单击主分支并重新设置基础。(当选择特征分支时)->将特征重新定位到主特征上。
    1.解决冲突后,在特性分支的Git历史中,我有:来自主分支的提交(通过rebase添加),来自特性分支的提交。
    1.此时,我的特性分支显示了一个传入提交和一个传出提交。(在Intellij中)->我正在试图理解为什么会发生这种情况。

重新定位前:

$ git log --oneline --decorate --graph feature main

* 1571a72 (HEAD -> main, origin/main) commit main branch

| * 4768d6b (origin/feature, feature) commit feature branch
|/

重新定位后:


* 4674fe5 (HEAD -> feature) commit feature branch
* 1571a72 (origin/main, main) commit main branch

在我再次更新特性分支之后,从第6点开始使用传入的提交


* f3f3735 (HEAD -> feature) commit feature branch
* 7a42764 commit main branch
* 4768d6b (origin/feature) commit feature branch

| * 1571a72 (origin/main, main) commit main branch
|/

非常感谢。

vuktfyat

vuktfyat1#

首先,让我们解决您的问题:


# checkout branch feature

git switch feature

# Undo the last "update" you did in step 6

git reset --hard 4674fe5

# force push your branch to the remote feature branch

git push --force-with-lease origin feature

这里的教训是,每当你重写本地分支时,如果你已经推了它,你就不想再把旧版本的分支拉回来。当你拉的时候,默认情况下,它会将你的旧版本合并回来,这会给你一个提交的副本。如果您使用pull --rebase,它会将您的分支重新定位到旧版本的分支上,这将使您保持您所看到的状态。您在第6步中所做的“更新”将您的分支机构的旧副本。而不是拉,你想吹走你的旧版本的分支,并用你的新版本和改进版本的分支替换它,要做到这一点,你必须强制推。

相关问题