工作区、暂存区、本地仓库、远程仓库
image.png

一般在提交代码的时候,顺序如下:

git status // 查看修改文件状态(已添加至暂存区还是未添加至暂存区)
git add . // 添加所有已修改文件
git add xxx/xxx // 添加目录为xxx/xxx的文件至暂存区
git commit -m 'xx功能全部完成' // 提交暂存区代码至仓库中
// 在仓库中创建了一个新的提交对象,并且更新了分支以指向这个新的提交对象
git push [remote] [branch] // 将代码推送至远程仓库
git push origin dev

Git push的基本用法

在Git环境中,使用Git push命令可以将本地修改推送到远程的仓库。Git push命令的基本语法格式如下:

git push [remote] [branch]

其中,[remote]表示远程仓库的名称,[branch]表示本地分支的名称。

例如,将本地的master分支推送到名为origin的远程仓库中:

git push origin master

指定远程分支

在使用Git push时,可以同时指定要将本地分支推送到哪一个远程分支。使用Git push命令时,可以在指定远程仓库后,加上一个冒号( : ),接着指定远程分支,例如:

git push [remote] [local branch]:[remote branch]

其中,[local branch]表示本地分支的名称,[remote branch]表示远程分支的名称。

例如,将本地的develop分支推送到名为origin的远程仓库的develop分支中:

git push origin develop:develop

指定远程分支

Git撤销某次已push到远程分支的代码(reset操作会清空提交记录)

git reset --hard 版本号ID

git reset与git revert:

原理:
  • revert 是回滚某个 commit ,不是回滚“到”某个commit;
  • reset 是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本

reset记录彻底清除,无法再次恢复;
revert执行后会产生新的commit记录,是通过一次新的commit来恢复到之前旧的commit,但revert会保留恢复的该次提交后面的其它提交内容,假如后面的提交与要恢复的提交更改了同一地方,此时用revert就会产生冲突!

Git版本移动时,soft、mixed、hard的区别:

git reset --soft 版本号

  • 仅移动本地库HEAD指针

而暂存区和你本地的代码是没有做任何改变的。

git reset --mixed 版本号

  • 移动本地库HEAD指针
  • 重置暂存区

不仅移动了本地库的指针,同时还把暂存区的代码移动到了工作区。也就是说你上次添加到暂存区的代码,现在变成了红色,即未做【add】操作。如果不写--mixed,默认也是此参数。

git reset --hard 版本号

  • 移动本地库HEAD指针
  • 重置暂存区
  • 重置工作区

移动了本地库的指针,不仅清空了暂存区代码,且清空了工作区代码。谨慎使用!

Q.E.D.


如人饮水、冷暖自知