Git
Git
初始化
...
基础操作
git init: 初始化当前文件夹作为一个git项目git add .: 将当前文件夹下所有的文件添加到 暂存区git commit -m "在双引号里输入你想提交的信息": 提交暂存区中的文件到 本地存储库
分支
git switch -c <branch-name>:创建并切换到新分支(推荐,Git 2.23+)。git checkout -b <branch-name>:创建并切换到新分支(适用于较旧版本的 Git)- 创建分支并上传到远端仓库
-
创建并切换到分支
git switch -c <branch-name>
或者
git checkout -b <branch-name> -
上传
git init
git add .
git commit -m "first commit" -
当你使用
git push -u origin <branch-name>设置了上游分支后,Git 会将当前本地分支(在这个例子中是 <branch-name>)与远程仓库中的 <branch-name> 分支建立跟踪关系。这意味着以后在 <branch-name> 上执行 git push 或 git pull 时,Git 会自动知道要与哪个远程分支进行交互git push -u origin <branch-name>
-
merge与rebase
merge
git merge
# 切换到目标分支
git checkout 主分支
# 将其他分支合并到当前分支
git merge 特性分支
# 如果有冲突,解决冲突后添加解决的文件
git add .
# 完成合并
git commit
git merge --abort
尝试取消当前的合并过程,并将你的工作目录恢复到合并开始前的状态。这是在合并尚未完成(即未commit)时取消合并的标准方法。
rebase 变基
交互式变基(Interactive Rebase)
这是最灵活的方式之一,允许你挑选、编辑、压缩或者删除提交
当有多个commit的时候,希望把多个commit合并成一个完整的commit。
git log 、 git log --oneline查看提交历史的编号
假设现在有以下几个commit,现在觉得add 1, add 2,add 3其实可以合并成一个commit:add1~3
(Head->master) add 3
add 2
add 1
init
- 首先,假设现在HEAD在add 3,
git rebase HEAD~3,希望合并前三个commit。 - 之后将编辑交互式变基列表:
这将打开一个文本编辑器,列出最近的3次提交。每一行代表一个提交,并以pick开头。要合并提交,只需将除第一个之外的所有提交前的pick改为squash(或简写s)。这会告诉Git将这些提交与前面的提交合并。 - 保存并关闭编辑器:
完成后保存更改并关闭编辑器。Git会开始应用你的修改。对于每个被标记为squash的提交,它还会提示你编辑合并后的提交信息。 - 完成变基:
最后一步是确认合并后的提交信息,然后保存退出。这样就完成了提交的合并。
直接通过重置和暂存区操作
这种方法适用于当你想把一系列提交压缩成一个新的提交。
- 找到起点之前的最后一次提交的哈希值:
比如说你想从init开始合并之后的所有提交。
git log --oneline
- 软重置到那个提交:
使用git reset命令进行软重置(不会影响工作目录中的文件)。
git reset --soft [init的哈希值]
- 重新提交所有更改:
现在所有的改动都处于暂存状态,你可以创建一个新的提交。
git commit -m "合并后的提交信息"
比较代码
idea的图形化工具很方便

远程
git remote -v: 验证远程仓库
![image]()
高级操作
1
需求:将某个分支,指定commit之后的提交回滚,并将这个commit之后的提交,合并到另一个新的分支上。
操作:
-
查看提交历史
git log --oneline
-
创建一个临时分支(可选但推荐):为了防止误操作丢失提交,可以先创建一个临时分支保存当前状态
git branch temp-branch
-
回退当前分支到指定 commit(保留更改为未提交状态)
3.1. 如果你想保留更改内容(只是撤销提交),使用:git reset --soft abc1234
3.2. 如果你想删除这些更改(完全回退):
git reset --hard abc1234
3.3. 如果你已经push到远程,需要force强制回退
git push origin <你的分支(HEAD表示与当前分支一致的远程分支)> --force
git push origin HEAD --force -
获取从 abc1234 到原分支顶端的所有提交 hash
查看从 abc1234 之后的提交:git log abc1234..temp-branch --oneline
记录下这些提交的 hash(比如 commit1, commit2, ...)
-
将这些提交应用到另一个分支(比如 feature)
切换到目标分支git checkout feature
然后依次 cherry-pick 提交(或 rebase):
方法 A:逐个 cherry-pick
git cherry-pick commit1
git cherry-pick commit2
...方法 B:交互式 rebase(更适用于连续提交)
git rebase abc1234 temp-branch
这会把 temp-branch 上从 abc1234 之后的所有提交重新应用到当前分支上
Q: 我不想修改原分支(main),只想提取提交合并到别的分支怎么办?
A: 不用 reset 原分支,直接用 rebase 或 cherry-pick 即可。
git checkout feature
git rebase abc1234 main
git rebase 很强大,但它是“改写历史”的操作,适用于本地私有分支或尚未共享的提交;对于远程分支或多人协作分支,请谨慎使用,避免强制推送带来的混乱
本文来自博客园,作者:chendsome,转载请注明原文链接:https://chuna2.787528.xyz/chendsome/p/18587032


浙公网安备 33010602011771号