文章目录
本地仓
本地仓上的其他分支
默认是master
分支
git branch
查看分支
本地仓当前只有一个分支,即master分支
git branch dev
创建分支
新建分支,名为dev
git switch dev
切换分支
从master分支切换至dev分支
git switch -c dev
创建dev分支,并切换至dev分支
git branch -d dev
删除分支
删除dev分支,不过先得切换到其他分支,比如master分支,再执行删除操作
本地仓远程仓相爱相杀
本地仓与远程仓
git remote - v
查看本地仓所关联的远程仓。
本地仓所关联的远程仓名字叫origin,远程仓地址为https://github.com/账号名/helloworld.git
git remote add 名字 远程仓地址
将本地仓与远程仓关联
将本地仓与远程仓https://github.com/账号名/helloworld.git,并将远程仓命名为release
git remote rm 名字
本地仓取关远程仓
取消本地仓与名为release的远程仓之间的关联
本地仓分支与远程仓分支
git branch --set-upstream 远程仓/远程仓分支 本地仓分支
设置 本地仓分支 关联 远程仓分支git branch -vv
查看 本地仓分支 与 远程仓分支 之间的关联关系
~本地仓master分支 关联 远程仓master分支,本地仓dev分支 关联 远程仓dev分支~
代码推送
git add 文件名
,增加 文件
git add .
,增加 当前目录下的所有文件
git rm 文件名
, 删除 文件
~假如删除 index.js,先本地删除index.js,再git删除~
rm index.js
git rm index.js
本地仓master分支推至远程仓master分支
本地仓dev分支推至远程仓dev分支
在远程仓上创建dev分支
在本地仓上创建dev分支
报错了?为什么?因为本地没有dev分支。
本次仓上创建dev分支,并切换至到dev分支。随后,git push origin dev
,便将README.md
本地仓dev分支内容推入远程库的dev分支。
注意哈,这时远程仓master分支里没有README.md
。
那我们就来看看怎么把 本地仓dev分支 推入 远程仓master分支
本地仓dev分支推入远程仓master分支
有两种方式。
- 首先本地仓dev分支并入本地仓master分支,然后本地master分支推入远程master分支
- 首先本地仓dev分支推入远程仓dev分支,然后远程仓dev分支并入远程仓master分支
本地仓dev分支 推入 远程仓dev分支 的操作上面已经介绍过了。
远程仓dev分支 并入 远程仓master分支 的操作在github网站上进行,具体步骤如下:
代码拉取
git pull origin master
从远程仓拉取代码
从远程仓的master分支拉取代码到本地仓的master分支
git clone https://github.com/账号名/helloworld.git
clone代码到本地
将远程仓代码克隆到空目录
可能的坎儿
问题1
- 问题描述
本地仓与远程仓代码不一致,git pull origin master
无法拉取代码 - 解决方法
git fetch --all
git reset --hard origin/master
git pull origin master
git fetch -all
,将远程仓代码下载到本地
git reset --hard origin/master
,将HEAD
指向origin/master
远程仓的master分支
git pull origin master
,从origin master
拉取代码
问题2
- 问题描述
git clone https://github.com/账号名/ant-design-vue.git
失败,错误提示:
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed - 解决方法
https的方式容易遇到此问题,而ssh的方式不会,所以改用git clone git@github.com:账号名/ant-design-vue.git
。
之后又有提示:The authenticity of host ‘github.com (13.229.188.59)’ can’t be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘github.com,13.229.188.59’ (RSA) to the list of known hosts.
这是因为.ssh
目录里没有known_hosts
这个文件。
直接输入“yes”并回车,就会创建known_hosts
这个文件,且本机公钥会被添加到该文件里。
其他
git log
|git log --pretty=oneline
|git reflog
查看命令行历史
注意这一长串
git status
查询状态
例1
add后查询状态,git会告诉你:master分支上的暂存区有变动,new了一个file,README.md。
你现在有两个选择,要么把该变动commit到本地仓,要么使用命令行git restore --staged 文件名
将该变动撤回。
我们选择将该变动commit到本地仓。
commit后查询状态,git会告诉你:master分支上没有变动,很干净,没有啥需要commit的。
例2
现对README.md如下修改并保存
add后查询状态,git会告诉你:master分支上的暂存区有变动,修改了README.md。
你现在有两个选择,要么把它commit到本地仓,要么使用命令行git restore --staged 文件名
将该变动撤回
我们选择将该变动撤回。
撤回后查询状态,git会告诉你:master分支上有变动,修改了README.md。
你现在有两个选择,要么把它add到暂存区,要么使用命令行git restore 文件名
撤销对该文件的修改。
我们选择撤销对README.md的修改。
cat查看README.md的内容,它复原了
git reset --hard HEAD^
|git reset --hard origin/master
git reset --hard HEAD^
,将HEAD
指向上一个版本。HEAD
指向当前版本,HEAD^
则指向上一个版本,HEAD^^
指向上上个版本,HEAD~100
则当前往上100个版本。
git reset --hard origin/master
,将HEAD
指向远程仓的master分支
参考文章:
廖雪峰git教程
github新手使用手册
git中的core.autocrlf
史上最简单的 GitHub 教程