文章目录
Git常用命令
查询当前分支基于哪个分支创建的
方法一:
git reflog show 分支名
方法二:
如果是 windows 系统,需要提前安装 grep
git reflog --date=local | grep 当前分支名
分支重命名
- 先把本地分支重命名
git branch -m 旧分支名 新分支名
- 删除远程分支
git push --delete origin 旧分支名
- 上传重命名后的本地分支
git push origin 新分支名
- 把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/新分支名
如果在游离分支上commit之后,如何提交到对应分支
- 先找到在游离分支上提交的 commitID
git reflog
- 再切换到对应分支上,执行以下命令
git merge ****(commitID)
本地提交的时候,多次commit可以合到同一个提交
git commit --amend -m "新的提交描述,可以覆盖上一次的"
git commit --amend --no-edit 描述继承上一次的
将多个commit合并成一个commit
- 先找到需要合并的 commit 的 commitID
git log
-
然后执行以下命令
方法一:
git rebase -i HEAD~n
n代表的是需要合并的 commit 数量,n=2 时,表示合并前两个 commit,n=3 时,表示合并前三个 commit,依次类推。
方法二:
git rebase -i ****(commitID)
注意:commitID 为你要合并到的记录的下一条 commit 的 commitID,例如你要合并前两个 commit,那么 commitID 就是第三条commit 的 commitID。
-
之后进入到 vim
- 第一个 commit 保持
pick
,其他的 commit 都改成s
(vim 下输入i
进入编辑模式,然后Esc
退出,再ctrl + :
并输入wq
退出 vim) - 然后再修改
commit message
,仅保留一个即可,其他的都可以注释掉或者更改掉 - 最后
git push
,记住如果是已经 push 的 commit 想要合并,git push -f
(利用强推,否则会提示 merge,一定要在自己的分支上搞强推)
- 第一个 commit 保持
reset 和 revert 的区别
- reset 是将HEAD指针移动到指定的 commit,而 revert 是将指定的 commit 重新提交,并且生成一个新的 commit。
- reset 是不可逆的,revert 是可逆的。
- reset 只会移动 HEAD 指针,而 revert 可以移动 HEAD 指针或者是将 commit 移到其他分支。
- reset 不会改变 commit 的任何信息,revert 会改变 commit 的任何信息。
慎用 reset(让 HEAD 重新指向某个 commit,导致中间的 commit 全部丢失,多人开发时不建议使用),多用 revert(可多条撤回,并新增 commit)