1.基本概念
head指针:head指针指向的是当前所在的分支
2.基本操作
2.1.本地新建仓库并和远程仓库关联
1.初始化本地仓库
git init
2.创建远程仓库
这个只能在相关网站手动点击创建,例如github、gitee等网站
3.关联远程仓库
关联远程仓库: git remote add origin 远程仓库url
删除与远程仓库的关联:git remote remove 远程仓库名
注意:这个只是将远程仓库的信息关联(删除)到本地仓库,不论远程仓库是否存在,这条命令是不会报错的。
4.提交本地master分支到远程仓库的master分支
因为是第一次提交所以需要将本地仓库的分支与远程仓库的分支进行关联,这条命令会将办本地仓库的当前分支与远程仓库master进行关联,并将本地仓库的当前分支推送到远程仓库的master分支。–set-upstream可以使用-u来代替,两个作用是相同的
git push --set-upstream origin master
注意:如果执行这个命令时远程仓库不存在,则会自动创建远程仓库,如果远程仓库存在,则会将本地仓库与远程仓库进行关联。当本地仓库新创建了一个分支,但是远程仓库并不存在该分支的时候,可以直接使用git push origin dev(也可以直接使用git push -u origin dev),这就表示,为远程仓库创建新的分支dev,并本地仓库的当前分支的内容push上去。
4.拉取远程仓库的master分支
git pull origin master
2.2.分支常用操作
查看远程仓库的地址:git remote -v
查看远程仓库的名字:git remote
查看fetch(拉取)和push的远程仓库的地址:git remote -v
查询远程仓库的详细信息:git remote show 远程仓库名(origin)
创建新的分支mybranch:git branch mybranch
注意:创建新的分支时,是以当前所在分支为模板创建的分支,创建完分支之后,并不会切换到新分支上去
切换到mybranch分支:git checkout mybranch
创建新分支mybranch并立即切换过去:git checkout -b mybranch
删除mybranch分支:git branch -d mybranch
合并分支:git merge mybranch
注意:这个表示将mybranch分支合并到当前分支上,如果当前分支是master分支,这个就表示将mybranch分支合并到master分支上
将本地仓库代码分支推送到远程仓库:git push --set-upstream(-u) origin 远程仓库分支名
注意:如果远程仓库不存在对应分支,则会新创建对应分支然后push,如果存在则直接push
其他命令
git reflog show:记录了每一次git的操作记录(所有的分支),例如 checkout、merge、commit等等,但是删除记录没有记录,比如,我删除了某一个分支,这里面显示的结果是没有记录
git log:记录某一个分支的提交记录
注意:这两个命令是不相同的
git reflog show --date=iso:将git的操作记录结果以标准时间显示;--date=iso:表示以标准时间显示
3.版本回退
通常,我们对修改的文件会先git add .,然后git commmit -m “注释”,但是如果commit错了,想要取消commit进行回退,有以下几种操作
3.1.回退到commit之前的状态
先使用git log命令查看commit的日志信息
git log
commit d56e3c6bd6dd06282d84d284f468297cea34a08b (HEAD -> master)
Author: xiangyonglin <xiangyonglin@jd.com>
Date: Thu Mar 18 11:11:37 2021 +0800
commit后面的那一连串可以看作是每次提交的版本号,执行回退操作的时候,加上那串就行了
git reset --soft d56e3c6bd6dd06282d84d284f468297cea34a08b
这就表示回退到d56e3c6bd6dd06282d84d284f468297cea34a08b这个版本,(注意:如果想要撤销这个版本的提交,就要回退到这个版本之前的版本)
git reset --hard:回退到上一个版本commit之后的状态,也就表示本此版本的改动(代码)全部删除(慎用)
git reset --soft:回退commit之前的状态,代码还在,也已经add,只是没有commit
git reset --mixed:将add和commit撤销,但是不删除工作空间代码,恢复到仅仅修改完后的样子(就是说,代码还在,只是没有add而已)
4.其他常用操作
4.1.cherry-pick
将一个分支上的某个commit合并到另一个分支,可用使用cherry-pick命令实现。
比如将dev分支上commit_id为f99f2b57b7ee72d56a08e699fbeec390bac96cb8的提交合并到master分支:
1)切换到master分支:git checkout master
2)执行cherry-pick命令:git cherry-pick f99f2b57b7ee72d56a08e699fbeec390bac96cb8
3)推送到远程master仓库:git push
注意master上新的commit id与dev上的id并不相同,即只是将dev上的修改拷贝过来作为一个新的提交。
4.2.git push --force
如果本地的分支版本落后于远程分支(本地跟远程为同一个分支)的版本,正常情况本地分支的代码是push不上去,会被拒绝,可以使用这个命令强制将本地分支的内容覆盖掉远程分支(慎用!!!!!)
4.3.跳过代码检查进行提交
git commit --no-verify -m "commit"
4.4.恢复删除的分支
参考:https://www.cnblogs.com/sxdcgaq8080/p/14793684.html