git知识点自我总结
- 克隆远程仓库代码【默认master主干】 :
$ git clone 远程仓库地址
【补充】git fetch origin develop(develop为远程仓库的分支名)
拉取远程分支代码
-
克隆远程仓库指定分支代码 :
$ git clone -b 远程分支名 远程仓库地址
-
将当前分支的要提交的内容全部提交:
$ git add .
【注意】 add 更改的文件数量超过1K+ 是,提交会出问题
- 给提交的内容标注 :
$ git commit -m "完成开发"
【注意】线上自动合并代码,自动发包,可能存在eslint 语法校验。我们可以通过
git commit -m"完成开发" --no-verify
来避开校验
- 从远程仓库的某分支中拉取代码到本地
$ git pull origin [name]
【注意】 如果远程仓库有develop分支,我们想拉到本地,并在本地新建分支test ,执行命令
$ git pull origin develop:test
- git远程分支强制覆盖本地分支
reset --hard
参数
git fetch --all
git reset --hard origin/dev (这里dev要修改为对应的分支名)
git pull origin dev
pull --force
参数
有的时候,已经知道远程分支与本地分支有不同的commit,比如本地分支有一个临时的commit
,远程分支并没有。是不能简单执行git pull
的,会报错。
此时如果只是想放弃本地的临时提交,强制将远程仓库的代码覆盖到本地分支。就要用到--force
参数,强制拉取功能,命令格式如下:
$ git pull --force <远程主机名> <远程分支名>:<本地分支名>
示例
git pull --force origin dev:dev
- 将本地代码推送至远程仓库分支
$ git push origin [name]
【注意】如果我们要将本地develop分支的代码推送到远程仓库master主干上
【注意】如果远程仓库不存在test分支,我们将本地develop分支推送到远程仓库test分支,远程仓库会创建新分支test,并接受本地分支develop的
【注意】如果远程仓库和本地都有test分支,我们单单只删除远程仓库的test分支
$ git push origin:test
强推代码:
git push -u origin master
,如果远程没有默认分支的时候,可以通过强推代码,将创建分支和推送代码同时完成【将远程仓库origin的master分支与本地仓库master分支关联】,强制推送代码到远程【谨慎使用】git push -u origin master -f
-
查看本地git历史记录
$ git reflog --pretty=oneline
-
查看当前分支的git代码更改状态
$ git status
-
查看最近提交人员信息
$ git log
-
查看本地分支
$ git branch
-
查看远程分支
$ git branch -r
-
查看本地和远程分支
$ git branch -a
-
创建本地分支
$ git branch [name]
【注意新分支创建后不会自动切换为当前分支】 -
切换本地分支
$ git checkout develop
-
删除本地分支:
$ git branch -d [name]
---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项 -
合并分支:
$ git merge [name]
----将名称为[name]的分支与当前分支合并 -
创建远程分支(本地分支push到远程):
$ git push origin [name]
【不能在主分支上,创建远程分支。必须在本地切换成本地分支,再推送到远程,远程仓库才会另建新的分支】
- 删除远程分支:
$ git push origin :heads/[name]
【注意】如果删除过后,远程仓库中又创建了一个分支,的需要提交一次代码或者远程连接一下仓库,才能获取到远程的分支
【补充知识】
- origin master 表示的意思是: git服务器(代表origin) 上的 master 分支
- origin/master, 表示从远程拉取代码后,在本地拷贝一份
提交代码四步曲
git add .
(后面有一个点,意思是将你本地所有修改了的文件添加到暂存区)git commit -m""
(引号里面是你的介绍,就是你的这次的提交是什么内容,便于你以后查看,这个是将索引的当前内容与描述更改的用户和日志消息一起存储在新的提交中)git pull origin 远程分支名
这是下拉代码,将远程最新的代码先跟你本地的代码合并一下,如果确定远程没有更新,可以不用这个,最好是每次都执行以下,完成之后打开代码查看有没有冲突,并解决,如果有冲突解决完成以后再次执行1跟2的操作git push origin master
(git push origin 本地分支名:refs/remotes/远程分支名) 将代码推至远程就可以了
git生成SSH密钥
- 配置用户名
git config --global user.name "用户名"
- 配置邮箱
git config --global user.email "git注册邮箱"
- 生成公钥和私钥
ssh-keygen -t rsa -C "git注册邮箱"
,按3次Enter,不需要设置名称与密码 - id_rsa文件为密钥,id_ras.pub文件为公钥;路径是C:\Users\Administrator.ssh
创建 .gitignore 文件
- 执行命令
touch .gitignore
Git 拉取远程分支代码并合并到本地分支
git fetch
方法
- 需要在本地额外新建分支的
// 查看远程
git remote -v
// 获取远程指定分支到本地临时新建的分支
// 获取远程master的分支的代码到临时新建的temp
git fetch origin master:temp
// 查看版本差异
// 查看temp分支与当前分支的差异
git diff temp
// 将临时分支temp合并到当前分支
git merge tmep
// 删除临时分支
git branch -D temp
- 不要在本地新建分支的
// 查看远程
git remote -v
// 获取远程分支到本地
// 获取远程的master分支
git fetch origin master
// 查看版本差异
// 查看远程master分支与本地master分支的差别
git log -p master..origin/master
// 合并到本地分支
git merge origin/master
git pull
方法
- 相当于git fetch与git merge一起使用,但是这样使用容易出错所以推荐第一种方式
// 查看远程
git remote -v
// 拉取并合并到本地分支
// 拉取远程的master分支合并到当前分支
git pull origin master
【补充】
- 执行下面语句后成功在本地同步了远程仓库文件
git pull --rebase origin master
- 可以允许不相关历史提交,强制合并
git pull origin master --allow-unrelated-histories
- 与远程仓库建立联系
git remote add origin git@github.com:XXXX/nothing2.git
版本回退
-
查看要回到未来的哪个版本 这样 我们采用
git reflog
命令 -
首先:回退上一个版本:
git reset --hard HEAD^
(^ 代表一个版本,两个代表两个版本 要是一百个怎么办,那就用 ~100代替 就好了。)
【补充】
-
查看已提交的版本 :
git log --pretty=oneline
-
回退本地代码版本(三种方式)
git reset 版本id
等同于git reset --mixed '版本id'
,回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响)git reset --soft '版本id'
,回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响)git reset --hard '版本id'
,回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换
回滚远程分支
- 强推本地分支,由于本地分支回滚后,版本将落后远程分支,此时如果用
git push
会报错,必须使用强制推送git push -f
覆盖远程分支,否则后面将无法推送到远程分支。git push -f origin '分支名字'
- 撤销提交,通常用的。
git reset
会把回退到的某一版本之前的提交全部撤销 3.git revert
,比如三个版本依次提交A1-A2-A3 ,如果用git reset
回退到A1,那么A2 A3都没了,假如我们只想要把A2撤销,并保留着A3,那么就需要使用git revert -n '版本id' //反做
,然后依次git add
,git commit -m ‘信息’
,git push
提交即可
转载自:https://juejin.cn/post/7136896920840044558