git问题列表(一)(持续更新中~~~)


answer


1、如何在本地创建git仓库,并推送到远程仓库?

答:
步骤如下:

  1. 在版本控制平台创建空的仓库。如:https://gitee.com/xxxx/myclass-api.git

  2. 创建本地 git 仓库:

# 创建目录
mkdir myclass-api
cd myclass-api
# 初始化仓库
git init 
# 创建并提交文件
touch README.md
git add README.md
git commit -m "first commit"
  1. 将本地文件推送到远程仓库
# 设置本地仓库对应的远程仓库
git remote add origin https://gitee.com/xxxx/myclass-api.git
# 推送当前分支的代码 到 远程分支master
git push -u origin "master"

2、如何创建本地分支,并基于其创建远程分支?

答:

  1. 以master为基线,创建本地分支。
# 此时分支必须已切换到master
git branch dev_0.0.1;

注:执行该命令所在的分支,即为其基线分支。

  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 的问题。
ERR_NAME_NOT_RESOLVED


 
 
 
 
 

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值