git版本管理常见技巧 | XYZ
Post

git版本管理常见技巧

git版本管理常见技巧

强制远程覆盖本地分支

1
git fetch --all && git reset --hard origin/master && git pull

其中origin/master为远程分支名,查询相应的远程分支名请使用:

1
git branch -r

拓展:查询本地仓库分支名

1
git branch -a

Tips: 不起效的话,先把本地分支的更改暂存,然后执行git reset试试。

撤回已提交远程的commit,更改暂存本地

参考文档

git撤销已经提交到远程分支的代码

省流

  1. 开两个git bash
  2. 其中一个使用命令git log查询需回退的commit相应版本号,复制
  3. 另一个使用命令:
    1
    
    git reset --soft 版本号 
    

    拓展:撤回上一个提交:

    1
    
    git reset --soft HEAD~1
    
  4. 强制同步到远程分支:
    1
    
    git push --force
    

    此操作不影响本地更改

vscode中手动撤回上次提交也是很方便的

合并某次提交至指定分支

与上一主题类似,取版本号后,切换到需要合并至的分支:

1
git checkout branch-name

拓展:新建分支

1
git checkout -b new-branch-name

合并提交至本分支:

1
git cherry-pick <commit-hash>

执行后,若有冲突,会在相应文件中显示,vscode打开可一一核对,核对后在右下角检查完成合并即可。

TODO: 如何快速强制覆盖

与主库同步进度(变基)

在提交 Pull Request (PR) 之前,建议你将你的分支变基到最新的远程主库,这样可以确保你的代码和主库是最新的,从而减少潜在的合并冲突。这是一个良好的实践。

  1. 获取最新的远程分支信息

    首先,你需要确保你的本地仓库是最新的。运行以下命令来获取远程代码的最新状态:

    1
    
    git fetch origin
    
  2. 切换到你的工作分支

    1
    
    git checkout feature-branch
    
  3. 执行变基

    现在,可以将你的分支变基到最新的远程主分支(例如 maindevelop,具体取决于你的项目):

    1
    
    git rebase origin/main
    

    这将重放你的提交在最新的远程分支之上,确保你的代码是基于最新状态的。

  4. 解决冲突(如果有的话)

    如果在变基过程中遇到冲突,Git 会提示你解决这些冲突。你需要手动编辑相关文件以解决冲突。解决完后,继续变基:

    1
    2
    
    git add <resolved_file>
    git rebase --continue
    

    如果需要放弃变基,可以运行:

    1
    
    git rebase --abort
    
  5. 推送到远程库

    一旦变基成功,就可以推送了。 有时,你需要强制推送你的分支到远程库,因为变基会更改提交历史:

    1
    
    git push origin feature-branch --force
    

    注意: 强制推送会覆盖远程分支的历史,请确保你是在你自己的特性分支上,且对其他人没有影响。

删除远程分支

要删除 Git 中的远程分支,可以使用以下命令。首先,确保你已经在本地更新了远程分支列表,以便获取最新的状态。

1. 更新远程分支列表

你可以运行以下命令来更新远程分支信息:

1
git fetch --prune

这将清理本地引用中已经被删除的远程分支。

2. 删除远程分支

要删除远程分支,使用以下命令格式:

1
git push <remote_name> --delete <branch_name>

例如,如果你要删除名为 feature-branch 的远程分支,且远程仓库的名称为 origin,可以运行:

1
git push origin --delete feature-branch

3. 验证删除

删除远程分支后,你可以使用以下命令查看远程分支列表,确认分支是否已被删除:

1
git branch -r

这将列出所有远程分支,以确保你所删除的分支不再显示在列表中。

注意事项

  • 确保在删除远程分支之前,其他团队成员或依赖该分支的工作已做好准备。
  • 删除远程分支是不可逆的操作,请确认操作的必要性。

删除本地分支

1
git branch -d <branch-name>

这里的 <branch-name> 应该替换为你想要删除的分支的名称。

请注意,这个命令只会删除已经合并到主干分支(通常是 mastermain)的分支。如果你想要强制删除一个尚未合并的分支,可以使用:

1
git branch -D <branch-name>

强制删除时要特别小心,因为未合并的更改将会丢失。

This post is licensed under CC BY 4.0 by the author.