文章目录
1、如何在本地创建git仓库,并推送到远程仓库?
答:
步骤如下:
-
在版本控制平台创建空的仓库。如:
https://gitee.com/xxxx/myclass-api.git
。 -
创建本地 git 仓库:
# 创建目录
mkdir myclass-api
cd myclass-api
# 初始化仓库
git init
# 创建并提交文件
touch README.md
git add README.md
git commit -m "first commit"
- 将本地文件推送到远程仓库
# 设置本地仓库对应的远程仓库
git remote add origin https://gitee.com/xxxx/myclass-api.git
# 推送当前分支的代码 到 远程分支master
git push -u origin "master"
2、如何创建本地分支,并基于其创建远程分支?
答:
- 以master为基线,创建本地分支。
# 此时分支必须已切换到master
git branch dev_0.0.1;
注:执行该命令所在的分支,即为其基线分支。
- 基于当前分支,创建远程分支
# 切换到新建的分支
git checkout dev_0.0.1;
# 推送到远程分支,如果远程分支不存在,则创建远程分支
git push -u origin dev_0.0.1;
注:这一步成功的前提:远程仓库的设置是正确的。否则可能会报错。
3、报错“‘origin’ does not appear to be a git repository”是什么原因?
答:
1.报错描述:
修改并提交文件后,打算将本地分支推送到远程。结果报错了:
$ git push -u origin dev_0.0.1;
# 报错信息
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
2.原因排查:
获取远程仓库的地址:
$ git remote -v;
master https://gitee.com/xxxx/myclass-api.git (fetch)
master https://gitee.com/xxxx/myclass-api.git (push)
3.报错原因:
为仓库指定了错误的名称。这里仓库的名称为master
,应当命名为origin
。
4.解决方法:
## 删除远程地址
git remote remove master;
## 重新添加远程地址
git remote add origin https://gitee.com/xxxx/myclass-api.git;
注意:这里的origin
有什么作用呢?
这是帮助文档的内容:
Add a remote named for the repository at <URL>. The command git fetch <name> can then be used to create and update remote-tracking branches <name>/<branch>
意思就是:
为本地仓库关联了一个被命名的远程仓库。这样就可以在
git fetch
中使用这个名称,以用于创建和更新远程分支remote_name/branch_name
。
所以,origin
在git命令中可用于指代远程仓库。
以下两个命令是等价的:
# 推送当前分支到远程,远程分支名为dev_0.0.1
git push --set-upstream origin dev_0.0.1;
#
git push -u origin dev_0.0.1;
4、如何删除远程分支?
答:
如果单纯删除远程分支,可以使用如下方法:
# 方法一
git push origin :test;
或者
# 方法二
git push origin --delete test;
注:
- 删除分支时,当前分支不能处于使用状态。如:要删除test分支,则当前分支不能是test,需要切换到其他分支,才能对其进行删除。
- 上面的命令只删除了远程分支,本地分支还是存在的。
若要删除本地分支,请使用下面的命令:
git branch -D test;
分支的查看命令如下:
# 查看所有分支
git branch -a;
-a
中的 a 是单词 all
的缩写。
# 仅查看本地分支
git branch;
# 仅查看远程分支
git branch -r;
-r
中的 r 是单词 remote
的缩写。
5、修改了工作区某个文件,但是没有提交,如何撤销?
答:
如果没有添加到暂存区(通过git add添加),使用如下命令撤销:
# 撤销修改
git checkout $filename
如果已经添加到暂存区,使用如下命令进行撤销:
# 撤销暂存区的添加
git reset HEAD $filename
# 撤销修改
git checkout $filename
6、修改了工作区某个文件,并且已经提交,如何撤销?
答:
如果已经提交,但是没有推送到远程仓库。可以使用如下命令进行撤销:
git reset --hard $last_commit_id
注:需要谨慎使用该命令,如果除了修改的文件,还有其他文件也进行了修改,并且没有commit,可能会造成修改的丢失。
7、git push项目时提示:fatal: unable to access ‘https://gitee.com/xxx/’: Could not resolve host: gitee.com
答:
原因分析:
从报错信息看,是无法解析host
尝试ping一下gitee.com,结果如下:
>ping gitee.com
正在 Ping gitee.com-31ba39d0fd3.baiduads.com [180.76.198.77] 具有 32 字节的数据:
来自 180.76.198.77 的回复: 字节=32 时间=22ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=25ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=23ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=38ms TTL=54
180.76.198.77 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 22ms,最长 = 38ms,平均 = 27ms
说明网络是通的。
再次执行ping命令(增加了t参数–不间断地ping)
> ping gitee.com -t
Ping 请求找不到主机 gitee.com。请检查该名称,然后重试。
此时网络是不通的。这就说明:网络不通是间隙性的。
那么,我们如何知道gitee.com对应的ip地址是哪些呢?
可以尝试使用 nslookup
命令。
在cmd中执行:
# 命令
> nslookup gitee.com
# 结果
DNS request timed out.
timeout was 2 seconds.
服务器: UnKnown
Address: 8.8.8.8
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
非权威应答:
名称: gitee.com-31ba39d0fd3.baiduads.com
Address: 180.76.198.77
Aliases: gitee.com
我的DNS服务器使用的是:8.8.8.8
。并且提示DNS请求超时。
会不会是DNS的问题呢?
接下来我尝试将 首选DNS服务器 改为百度的公共DNS:
# 百度的公共DNS
180.76.76.76
# 阿里公共DNS
223.5.5.5
备用DNS服务器,使用的是阿里的公共DNS。
再次执行nslookup:
# 命令
nslookup gitee.com
# 结果
服务器: public-dns-a.baidu.com
Address: 180.76.76.76
非权威应答:
名称: gitee.com
Address: 180.76.198.77
可以看到不再有请求超时的信息,多次执行ping命令:
>ping gitee.com -t
正在 Ping gitee.com [180.76.198.77] 具有 32 字节的数据:
来自 180.76.198.77 的回复: 字节=32 时间=40ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=23ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=27ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=23ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=22ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=23ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=26ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=23ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=24ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=31ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=29ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=27ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=26ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=27ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=22ms TTL=54
来自 180.76.198.77 的回复: 字节=32 时间=24ms TTL=54
180.76.198.77 的 Ping 统计信息:
数据包: 已发送 = 16,已接收 = 16,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 22ms,最长 = 40ms,平均 = 26ms
不再出现间隙性网络不通的问题(原因:无法解析域名)
同时也解决了chrome浏览器中报 ERR_NAME_NOT_RESOLVED
的问题。