git checkout
# 下面两句命令的作用是一样的,都是将 index.html 恢复到上一次 commit 的状态
git checkout index.html
git checkout -- index.html
# 注意:如果是想在 login 分支的基础上,新建一个分支,进一步开发 login 分支,那么可以直接执行下面的新建并切换到新分支命令,
# 然后直接在新分支的基础上进行开发即可
git checkout -b login-extend
# 你可以在新分支 login-extend 上新增一些文件,然后 git add 和 git commit 提交到 git 仓库
# 注意:只有使用 git commit 提交到对应的分支中,该部分代码才会归于该分支
# 然后切换回 login 分支,然后就会发现,在新分支 login-extend 上新建的文件不见了,显示的都是 login 分支上的文件
# 再次切换回 login-extend 分支,发现工作区又会显示之前新建的文件
git 分支操作相关命令
# 创建并切换到 login 分支
git checkout -b login
# 切换到已存在的 login 分支( 如果不存在会报错 )
git checkout login
# 查看 git 仓库中的所有分支( * 标识的高亮分支就是当前所处的分支 )
git branch
# 将 main 分支的内容合并到当前的 login 分支( 当前所处分支为 login )
# 实际开发中,如果想在某一个分支的基础上进行进一步的开发,那么可以使用 git merge 命令,将目标分支的代码拷贝一份到当前分支中,
# 然后,就可以在新分支上继续开发目标分支了,两个分支的代码互不干扰
git merge main
# 将当前所处分支的名称修改为 main
git branch -M main
# 新增远程仓库地址
git remote add 远程仓库别名 远程仓库地址
# 提交代码到远程仓库分支并设置对应的上流分支,然后下次直接执行 git push,就可以完成将代码提交到已经设置的远程上流分支中
git push -u 远程仓库别名 某一个远程仓库分支
# 将当前分支提交到对应名称的远程分支上( 远程分支不存在时自动创建 )
git push 远程仓库别名 某一个远程仓库分支( 一般与当前提交的本地分支同名 )
# 删除分支
# 删除本地分支
git branch -d localBranchName
# 删除远程分支
git push origin --delete remoteBranchName
git commit
修改最近一次的提交信息
# 1.打开最近一次的提交信息
git commit --amend
# 2.输入 i,进入 vim 编辑器的编辑模式
# 第一行就是 git commit 时设置的 message
# 3.修改好之后,按下 esc 键退出编辑模式,然后输入 :wq 保存并退出
# 输入 :qa! 并按回车键来放弃所有更改并退出 Vim
# 将当前的提交和上一次的 commit 合并为一次 commit
git commit --amend --no-edit
修改
-a, --all
Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected.
# 告诉 git 之后自动暂存被修改的文件和被删除的文件变更,但是新创建的文件还是需要手动使用 git add 暂存
# 就是除了新增文件之外,之后可以跳过 git add 的步骤,直接使用 git commit 提交变更
git commit -a 或 --a
git pull
# 拉取设置的远程上流分支中代码到本地分支中
git pull
# 执行上面的命令相当于执行下面两个命令
git fetch
git merge
git rm
# 删除工作区中的 test.txt 文件,并提交变更到暂存区
git rm test.txt
# 只删除暂存区中的 test.txt 文件,工作区中的保留
git rm test.txt --cached
# 清空暂存区( rm 是 linux 命令 )
# 就是删除 .git 目录下的 index 文件
rm .git/index
git stash 和 git stash pop
git stash
命令,可以将当前未提交的修改(工作区的修改和暂存区的修改)先暂时储藏起来,保证工作区的干净。
然后就可以切换到其他分支进行 bug 修复等操作,完成之后,重新切换回 dev 分支下通过 git stash pop
命令将之前储藏的修改取出来,继续进行新功能的开发工作
# 临时存储工作区未提交的变更
# 注意:新建的文件并不会被储藏,注意不要手动删除,以免丢失
git stash
执行完 git stash
之后,可以看到 dev 分支中被修改的文件也已经恢复到了最近一次 commit 的版本,说明 dev 分支修改已经被临时储藏成功了。
这个时候就可以放心的切换到其他分支,完成紧急开发工作(比如修复线上版本的 bug)。
线上 bug 修复完成后,就可以继续开始之前的新功能开发了。
先切换到 dev 分支下:
# 切换到 dev 分支
git checkout dev
然后,取出之前临时储藏的修改
# 取出之前通过 git stash 储藏的变更
git stash pop
git reset
菜鸟教程:git reset 命令
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset 命令语法格式如下:
git reset [--soft | --mixed | --hard] [HEAD]
–mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
# 移除暂存区中暂存的变更, 不会影响工作区
git reset
# 回退到最近一次 commit 的版本
git reset HEAD~1
# 回退到上上次 commit 的版本
git reset HEAD~2
–soft 参数用于回退到某个版本:
git reset --soft HEAD
示例:
git reset --soft HEAD~3 # 回退上上上一个版本(回退 3 个版本)
–hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次 commit 的版本:
git reset --hard HEAD