Git初始化

git init --->该命令用于在本地初始化一个git仓库,使用该命令后,会在当前文件夹生成一个.git的文件夹.

初始化配置

ssh-keygen -t rsa -C "youremail@example.com"---产生公私钥对
git config --global user.name "abcd"---设置全局用户名
git config --global user.email "XXXXX@XX.com"---设置全局邮箱

Git版本回退

git reset --hard ---->版本回退
首先HEAD指的是当前版本,HEAD^是上一版本,HEAD^^是上上版本
git reset --hard HEAD^
git reset --hard commit-id
git reset HEAD file把暂存区的修改撤销掉,重新放回工作区

git reflog ----->查看命令提交记录,获取commit-id

git checkout -- readme.txt可以丢弃工作区的修改
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态。
一种是readme.txt已经添加到暂存区后,又作了修改,现在撤销修改就回到添加到暂存区后的状态。
总之就是让这个文件回到最近一次git commit或git add的状态。

Git分支管理

git branch -a ----> 查看所有分支
git branch -d dev ----> 删除本地dev分支
git push origin --delete dev ----> 删除远端dev分支
git checkout -b master(本地分支名) origin/master(远端分支名) ---->切换并创建本地分支
git checkout dev ----> 切换本地dev分支
git merge dev ----> 合并dev分支到当前分支

git add命令

git add . ----> 提交工作区所有变化到暂存区,包括文件内容修改和新文件,但不包括已经删除文件。
git add -u ----> 提交已经追踪文件的修改到暂存区(即只会提交add过的文件的变化,新文件不会提交)。
git add -A ----> 提交工作区所有变化,包括以上两种,即会提交新文件,删除文件,文件内容修改到暂存区。

撤销修改

因为暂存区的存在,撤销修改分为几种情况(通过 git status 查看仓库状态时会提示相关撤销修改的命令):

1)修改后,文件没有放入暂存区(即文件一直在工作区):用 git checkout -- 文件名 撤销工作区的改动(回到跟版本库一样的状态,即回到最近一次 git commit时的状态,所有改动全部清除)
2)修改后,文件放入暂存区,且文件没有再次修改(即文件已经进入暂存区):分两步:先用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),再执行 git checkout -- 文件名 清除工作区的改动
3)修改后,文件放入暂存区,且文件再次修改:分三步:先用 git checkout -- 文件名 撤销工作区的改动,再用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),最后执行 git checkout -- 文件名 清除工作区的改动

通过 git checkout -- 文件名 命令可以撤销文件在工作区的修改。
通过 git reset 文件名 命令可以撤销指定文件的 git add 操作,即这个文件在暂存区的修改。
通过 git reset 命令可以撤销之前的所有 git add 操作,即在暂存区的修改。
【本段为CSDN博主「kikajack」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/kikajack/article/details/79846098】

撤销Commit

撤销commit,并保留commit时的修改,可以通过下面的命令完成:
git reset --soft HEAD^(撤销当前提交)== git reset --soft HEAD~1
git reset --soft HEAD~2(撤销两次提交)
git reset --soft commit-id

对于reset参数的说明:
--mixed 不删除工作空间改动代码,撤销commit,撤销git add.
--soft 不删除工作空间改动代码,撤销commit,不撤销git add.
--hard 删除工作空间改动代码,撤销commit,撤销git add

git stash命令

git stash --->所有未提交修改保存到堆栈中。
git stash save "注释" --->作用于stash相同,只是会保存注释。
git stash list --->显示所有stash列表。
git stash pop --->将当前stash中的内容应用到当前对应分支的工作目录中(注意:使用该命令后,当前stash会被删除)。
git stash apply --->将堆栈中的内容应用到当前目录,其与pop的区别是,apply不会删除stash,可以反复应用。
git stash drop stash@{0} --->删除stash0。
git stash clear ---> 清除堆栈所有信息。
git stash show --->查看堆栈中最新stash与当前目录的差异。

例1:
git stash list
stash@{0}: WIP on test: 52ec750f ****
stash@{1}: WIP on test: 7ac0fb91 ****
git stash apply stash@{0}
git stash list
stash@{0}: WIP on test: 52ec750f ****
stash@{1}: WIP on test: 7ac0fb91 ****

例2:
git stash list
stash@{0}: WIP on test: 52ec750f ****
stash@{1}: WIP on test: 7ac0fb91 ****
git stash pop
git stash list
stash@{1}: WIP on test: 7ac0fb91 ****