在本地有修改的情况下,新建一个远程分支,并把这些修改同步到这个全新的远程分支上------核心思路是「先基于当前修改创建本地新分支 → 提交修改 → 推送本地新分支到远程(自动创建对应的远程新分支)」,以下是完整、可直接执行的步骤,覆盖所有关键细节(比如修改未提交/已提交、验证同步结果):
前提说明
假设:当前在 dev 分支有未提交/已提交的修改,想新建远程分支 origin/feature-my-new(可替换为想要的分支名),并把修改同步过去。
完整操作步骤
步骤
1:确认本地修改状态(避免遗漏) 先查看当前修改的文件,确保知道要同步的内容:
bash
# 查看本地修改(未暂存/已暂存的内容)
git status
常见输出示例:
yaml
# 情况1:有未暂存的修改
modified: src/App.js
modified: src/utils/request.js
# 情况2:有已暂存但未commit的修改
Changes to be committed:
modified: src/App.js
# 情况3:已commit到当前分支(仅需确认提交记录)
git log --oneline # 查看最后一次提交
步骤 2:
创建本地新分支(携带当前修改) 基于当前分支(含所有未提交/已提交修改)创建并切换到本地新分支(名称建议和要创建的远程分支一致,方便管理):
bash
# 创建并切换到本地新分支(feature-my-new 替换为新的分支名)
git checkout -b feature-my-new
核心说明:
-b表示「创建分支并切换」; - 执行后,当前的所有修改(未提交/已提交)都会被带到这个新分支上,原分支(如 dev)的修改不会受影响。
步骤 3:
提交本地修改到新分支(关键) 如果修改还未提交(步骤1看到有未暂存/已暂存内容),先完成提交(否则无法推送到远程):
sql
bash # 1. 暂存所有修改(也可指定文件:git add src/App.js) git add . # 2. 提交修改到本地新分支(备注写清楚修改内容) git commit -m "新增xxx功能:同步到feature-my-new分支"
补充:
如果修改已提交到原分支 若修改已经 commit 到原分支(如 dev),执行 git checkout -b feature-my-new 后,这些 commit 会自动带到新分支,无需重复提交。
步骤 4:
推送本地新分支到远程(自动创建远程新分支) 这一步会在远程仓库创建对应的新分支,并把本地新分支的修改同步过去:
bash
# 推送本地新分支到远程,自动创建远程新分支
# -u 表示「关联本地分支和远程分支」,后续可直接
git push/git pull git push -u origin feature-my-new
核心说明:
origin是远程仓库的默认别名(如果远程仓库别名是 gitee/gitlab,替换即可);feature-my-new是要创建的远程分支名(和本地分支名一致);- 执行后,远程仓库会新增
origin/feature-my-new分支,且本地修改已同步到该分支。
步骤 5:
验证是否同步成功(确保无误) 推送后,验证远程分支是否创建成功,且修改已同步:
bash
# 1. 刷新远程分支缓存(查看最新的远程分支列表)
git fetch -p
# 2. 查看所有远程分支(确认 feature-my-new 已存在)
git branch -r
# 3. 查看远程新分支的提交记录(确认修改已同步)
git log origin/feature-my-new --oneline
预期输出:
bash
# git branch -r 会看到:
remotes/origin/main
remotes/origin/dev
remotes/origin/feature-my-new
# 新创建的远程分支
# git log 会看到刚才提交的记录:
abc123 新增xxx功能:同步到feature-my-new分支
补充场景:特殊情况处理
场景 1:
只想同步「部分修改」到新分支 如果不想把当前所有修改都同步,只想选部分文件/部分代码:
bash
# 1. 先切换到新分支(git checkout -b feature-my-new)
# 2. 仅暂存指定文件(而非 git add .)
git add src/utils/request.js
# 3. 提交并推送(后续步骤同上)
git commit -m "仅同步请求工具类修改"
git push -u origin feature-my-new
场景 2:
回到原分支继续开发 同步完成后,若想回到原分支(如 dev)继续开发:
bash
# 切换回原分支(修改仍保留在 feature-my-new 分支)
git checkout dev
场景 3:推送时提示权限不足
如果远程仓库开启了分支保护,或无直接创建分支的权限,需:
- 联系仓库管理员开通权限;
-
- 或通过「提 PR/MR」的方式将本地新分支合并到远程(适合团队协作场景)。
总结
-
核心流程:确认修改 → 创建本地新分支 → 提交修改 → 推送创建远程新分支 → 验证;
-
关键命令:
- 创建分支:
git checkout -b 新分支名; - 推送创建远程分支:
git push -u origin 新分支名;
- 创建分支:
-
核心优势: 全程保留原分支修改,新分支独立承载修改,且远程分支自动创建,无需手动在远程仓库操作。 这套流程是团队协作中「基于现有修改创建新分支并同步」的标准做法,既保证修改不丢失,又符合 Git 分支管理规范。
附(令牌访问)
太久没维护这个项目了,仓库改成令牌访问了,记一下命令:
perl
#git remote ser-url origin http://username:用户名>:<令牌>@<仓库域名>/<用户名>/<仓库名>.git
git remote set-url origin https://zhangsan:ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/zhangsan/my-project.git