如何将特定提交推送到远程,而不是之前的提交?

这篇博客讨论了如何在Git中将特定提交推送到远程仓库,而非所有历史提交。建议的方法包括使用cherry-pick创建新分支,重新排序提交,或者使用git reset和git push。此外,还提供了相关命令行操作的指导。

我已经对不同的文件做了几次提交,但到目前为止,我想将我的远程存储库推送到特定的提交。

那可能吗?


#1楼

在推送特定提交时,Cherry-pick与所有其他方法相比效果最佳。

这样做的方法是:

创建一个新的分支 -

git branch <new-branch>

使用您的原始分支更新您的新分支 -

git fetch

git rebase

这些操作将确保您完全拥有与原点相同的东西。

樱桃挑选你要做的sha id -

git cherry-pick <sha id of the commit>

您可以通过运行获取sha id

git log

把它推到你的原点 -

git push

运行gitk ,看看一切看起来都像你想要的那样。


#2楼

其他答案缺少重新排序的描述。

git push <remotename> <commit SHA>:<remotebranchname>

将推送单个提交,但该提交必须是本地,非推送,提交的OLDEST,不要与top,first或tip提交混淆,在我看来这些都是模棱两可的描述。 提交需要最早的提交,即距离您最近的提交最远的提交。 如果它不是最早的提交,则将推送从最旧的,本地的,未推送的SHA到指定的SHA的所有提交。 要重新排序提交使用:

git rebase -i HEAD~xxx

重新排序提交后,您可以安全地将其推送到远程存储库。

总结一下,我用过

git rebase -i HEAD~<number of commits to SHA>
git push origin <post-rebase SHA>:master

将单个提交推送到我的远程主分支。

参考文献:

  1. http://blog.dennisrobinson.name/push-only-one-commit-with-git/
  2. http://blog.dennisrobinson.name/reorder-commits-with-git/

也可以看看:

  1. git:在本地Rebase之后重复提交Pull
  2. git:推送单一提交,重新排序,重复提交

#3楼

我相信你必须“git revert”回到那个提交然后再推它。 或者你可以cherry-pick提交到一个新的分支,并将其推送到远程存储库的分支。 就像是:

git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}

#4楼

通过指定的提交推 ,你可以这样写:

git push <remotename> <commit SHA>:<remotebranchname>

提供<remotebranchname>已存在于遥控器上。 (如果没有,你可以使用git push <remotename> <commit SHA>:refs/heads/<remotebranchname>来自动创建它。)

如果要在推送先前提交的情况下推送提交,则应首先使用git rebase -i重新提交提交。


#5楼

我建议使用git rebase -i ; 将您想要提交的提交移动到您所做的提交的顶部。 然后使用git log获取重新提交的SHA的SHA,检查它并推送它。 rebase将确保您所有其他提交现在都是您推送的提交的子项,因此未来的推送也可以正常工作。

<think>首先,用户的问题是关于Git的:"我想将本地的Git提交推送远程仓库的指定分支 请问git push local commits to remote specific branch"。翻译成英文是:"I want to push local Git commits to a remote specific branch. How to do git push local commits to remote specific branch?" 我需要基于系统级指令来构建回答。指令包括: - 所有行内数学表达式用$...$格式(但这里可能不涉及数学,因为主题是Git)。 - 独立公式用$$...$$格式(同样,可能不适用)。 - LaTeX语法正确(但Git命令是文本,不需要LaTeX)。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾添加引用标识,如[^1]。 - 回答结构清晰,帮助用户逐步解决问题。 - 参考提供的引用:引用[1]、[2]、[3]是关于Git push的。 引用内容: - 引用[1]:讨论git push命令的选项和推送特定远程仓库和分支。 - 引用[2]:示例错误,当远程分支已更新时推送被拒绝。 - 引用[3]:git push命令的语法,包括推送特定分支。 用户的问题是如何推送远程特定分支。所以,我需要解释git push命令的基本用法,特别是针对特定分支。 标准git push命令格式是: git push <remote> <local_branch>:<remote_branch> 其中: - <remote> 是远程仓库的名称,如origin。 - <local_branch> 是本地分支名。 - <remote_branch> 是远程分支名。 如果本地分支和远程分支同名,可以简写为git push <remote> <branch_name>。 在回答中,我需要使用中文。 结构回答: 1. **解释基本命令**:清晰说明如何推送特定分支。 2. **步骤**:逐步指导用户操作。 3. **常见问题**:如引用[2]中提到的推送被拒绝的情况,如何处理。 4. **添加引用**:在引用的段落末尾添加引用标识。 5. **生成相关问题**:在回答末尾添加相关问题部分。 最后,添加相关问题。 完整回答结构: - 开头:直接回答问题。 - 主体:详细解释命令和选项。 - 结尾:生成相关问题。 现在,草拟回答。 回答内容: 首先,确认用户需求:将本地提交推送远程特定分支。 命令:git push <远程名称> <本地分支名>:<远程分支名> 例如:git push origin main:feature-branch 如果本地分支和远程分支同名,可以简写:git push origin main 引用[3]中提到:git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名] ] 所以,我可以解释: - 基本用法:git push <remote> <local_branch>:<remote_branch> - 选项:如-f 强制推送,--set-upstream 设置上游分支。 处理推送被拒绝的情况,如引用[2]:当远程分支已更新时,需要先拉取更新。 在中文中解释。 添加引用标识:当引用某个引用时,在段落末尾添加[^1]、[^2]等。 例如:"如果远程分支有更新,推送可能会被拒绝,需要先合并更改[^2]。" 生成相关问题: 1. 如何设置上游分支? 2. 如何处理推送冲突? 3. Git push的其他选项? 确保回答真实可靠:基于Git文档和标准实践。 最后,相关问题部分用§§相关问题§§分隔。</think>### 将本地Git提交推送远程特定分支的方法 要将本地的Git提交推送远程仓库的指定分支,您需要使用`git push`命令,并指定远程仓库名称、本地分支名和远程分支名。以下是详细步骤和解释,帮助您逐步操作。命令的基本语法为: `git push <远程名称> <本地分支名>:<远程分支名>` 其中: - `<远程名称>` 是远程仓库的别名(如 `origin`,通常通过 `git remote add` 设置)。 - `<本地分支名>` 是您本地工作分支的名称(如 `main` 或 `feature`)。 - `<远程分支名>` 是远程仓库中目标分支的名称(如 `develop` 或 `release`)。 如果本地分支名和远程分支名相同,您可以简写命令为:`git push <远程名称> <分支名>`[^3]。以下是一个完整示例: #### 操作步骤 1. **检查本地状态**: 在推送前,先确认本地分支的提交状态。运行: ```bash git status ``` 确保所有更改已提交commit)。如果有未提交的修改,先使用 `git add` 和 `git commit` 完成提交。 2. **执行推送命令**: 假设您要将本地分支 `my-feature` 推送远程仓库 `origin` 的 `remote-feature` 分支,命令如下: ```bash git push origin my-feature:remote-feature ``` 如果本地分支和远程分支同名(如都叫 `main`),则简写为: ```bash git push origin main ``` 3. **处理常见问题**: - **推送被拒绝**:如果远程分支已更新(例如,其他协作者推送了更改),Git 会拒绝推送以避免历史冲突。错误消息类似:`! [rejected] ... (non-fast-forward)`[^2]。解决方法: - 先拉取远程更新:`git pull origin <远程分支名>` - 解决合并冲突后,重新推送。 - **强制推送**:仅在必要时使用 `-f` 选项(如分支重写后),但需谨慎,因为它会覆盖远程历史: ```bash git push -f origin my-feature:remote-feature ``` - **设置上游分支**:如果这是首次推送分支,添加 `--set-upstream` 选项(或 `-u`)可关联本地和远程分支,简化后续操作: ```bash git push -u origin my-feature:remote-feature ``` 之后只需运行 `git push` 即可自动推送到关联分支[^1][^3]。 4. **验证结果**: 推送完成后,运行以下命令检查远程状态: ```bash git remote show origin # 显示远程仓库详情 git log --oneline # 查看提交历史 ``` 通过以上步骤,您可以安全地将本地提交推送远程特定分支。Git 提供了丰富的选项,如 `--dry-run` 测试推送效果,或 `--tags` 推送标签,具体可参考 Git 文档(运行 `git push --help` 获取帮助)[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值