Git是一个开源的分布式版本控制系统,主要用于管理软件代码的版本和变更历史。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
1.在上一修改的基础上增加改动
在不增加新的commit的情况下,将新修改的代码追加到前一次的commit中,以避免无用的提交。
git commit --amend
2.修改提交信息
用于修改最后一次提交,--only用于告诉git仅修改上一次提交,不改变其他任何的更改
git commit --amend --only
git commit --amend --only 'new commit message'
3.撤销某一个文件的修改
git log // 找到修改文件前的一个版本号
// 或者
git reflog // 找到修改文件前的一个版本号
git checkout <版本号> path/to/file
4.撤销所有修改
撤销包括添加、删除、修改等所有操作,撤销本地所有未提交的修改,并覆盖本地文件
git reset --hard <版本号>
5.撤回最后一次提交
如果提交已推送
git reset <版本号> --hard
git push --force-with-lease <remote-branch>
如果提交未推送
// 不改变暂存区和工作区的内容
git reset --soft <版本号>
6.恢复误删的分支
// 找到被删branch最后一次提交记录的版本号
git reflog
//Gitlab上根据版本号直接新建branch来恢复被删除的分支
git checkout -b <branch-name> <版本号>
7.在错误的分支上修改了但未提交
git stash
git checkout <correct-branch-name>
git stash pop
8.在错误的分支上修改了并已提交
// 撤销上一次提交,但保留更改
git reset <版本号> --soft
git stash
// 切换到正确的分支
git checkout <correct-branch-name>
git stash pop
git add. or add <individual-files>
git commit -m 'message'
9.远程仓库设置错误
// 查看本地和远程库的关联信息
git commit -v
// 修改当前git仓库的远程地址为指定的url
git remote set-url origin <url>
10.回退到目标版本
回退到目标版本有三种命令 reset revert checkout
git reset --hard <版本号>
// 三种模式 --soft --mixed --hard
--mixed:默认模式,将HEAD指针和暂存区都回退到指定提交,但不改变工作区的内容
--soft: 将HEAD指针回退到指定提交,不改变暂存区和工作区的内容
--hard: 将HEAD指针、暂存区和工作区都退回到指定提交。
git revert <版本号>
// 撤销指定提交的修改,不改变提交历史,通过创建新的提交来撤销之前饿的修改,比git reset命令安全
git checkout <版本号>
// 将当前分支的HEAD指针指向指定的提交,并将工作区的内容替换成指定的内容
// 不改变提交历史,但会覆盖工作区的内容