Git关联远程代码仓库遇到的一些问题

0. 准备工作

在关联远程代码仓库之前,需要在代码仓库中添加本地的ssh公钥,整个数据传输是一个对称加密机制,这一点就不需要重点讲了。就是通过ssh-keygen命令创建。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

这样就会创建一个新的ssh key,使用email作为秘钥的label

然后回车回车就行,当然也可以自己指定秘钥存储位置。默认是在根目录下的.ssh文件夹中,如下图所示。

最后复制粘贴到代码仓库的对应位置,具体见下图。

1.关联代码仓库

需求:本地你的项目,你想push上去,肯定是需要关联代码仓库的。

其实直接可以先使用命令git clone url,这样会在当前文件夹中建立一个远程代码仓库的文件夹,关联什么的都做好了,只需要把自己的项目复制到这个文件夹里,然后push上去就行。

但是有时候就是想在项目所在目录下关联代码仓库,就需要用以下的方法了。

1.1 本地项目关联远程空的代码仓库

如下图所示,就是没有那个readme文件的空仓库。

  • 找到你的项目的位置,打开git bash。
  • 初始化本地仓库
git init
  • 关联远程代码库

解释:就是为远程代码库对于一个名字,一般去名字为origin,我这里一般化,写了个yu

git remote add yu git@codehub.devcloud.huaweicloud.com:Test00097/test.git

关联之后,你肯定想知道现在能不能push了

使用命令git status查看当前状况

git status

可以看到以下结果,这表明我们已经关联上了。

  • 然后执行push的一系列命令
git add .

git commit -m "代码提交"

git push

然后出现以下的错误,原因是,我们没有指定具体push到远程的哪个代码仓库的哪个分支

fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using

    git remote add <name> <url>

and then push using the remote name

    git push <name>
 

 接着我们输入这条命令

# push到远程库名为yu的master分支上
git push yu master

 

可以看到成功提交上去了。

接下来我们来看看情况2:本地有代码,远程代码仓库非空,比如:自动创建了一个readme文件。

1.2 本地项目关联远程非空代码仓库

这种情况较第一种比较复杂,但是只要按照以下命令来,是没问题的。

首先我们可以通过下图看到,代码仓库非空,自动创建了一个readme文件。

然后我们按照正常的命令来关联

首先还是初始化本地仓库,关联代码库,这个“he”是我给远程代码库取的名字而已。

git init

git remote add he git@codehub.devcloud.huaweicloud.com:Test00097/test.git

然后由于远程仓库有文件,我们需要pull下来,下面的命令是肯定会出错的。

git pull

 

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=he/<branch> master
 

 我们先选择第一种方式,加上具体的仓库和分支信息

git pull he master

可以看到成功的将远程代码仓库的readme.md文件pull到本地了

当然我们也可以选择第二种方式,本地分支track追踪远程分支,设置完后可以直接使用git pull命令,不需要指定哪个仓库,哪个分支了。

git branch --set-upstream-to=he/master master

其中,he/master表示远程的he仓库,最后的master表示本地的master的分支

命令的意思为:本地master分支设置为跟踪远程的he代码仓库的master分支

但是如果直接使用第二种方式,它会提示没有master branch。

我们看看当下有哪些分支

git branch -a

毫无疑问,显示为空, 这时我们需要将远程仓库he的分支给fetch过来

git fetch he
# 合并到本地分支
git checkout master

这时候我们都不需要设置upstream ,直接默认track了

 

若我们使用的是第一种方式,我们试试能不能把本地的项目push上去,按照我们正常的push命令,这里肯定也是会出错的

git add .
git commit -m "上传代码"
git push

运行完代码后显示

fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using

    git remote add <name> <url>

and then push using the remote name

    git push <name>

 然后第一步我们已经做过了,接下来做第二步。

其实我们可以直接输入以下命令,意为:将本地提交push到远程代码库名为he的master分支上

git push he master

但是我们还是按照正常的提示来吧

git push he

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream he master

 让我们设置以下默认的upstream

git push --set-upstream he master

如果依然提示没有master分支的话,我们可以使用上面提到的,git fetch he,如果没有就不用了。

这样我们就可以通过以下命令push了,默认就是push到he的master分支上

git push

2. 其他问题

  • 远程仓库有一个文件名和本地项目的文件名相同

出现如下错误信息

error: The following untracked working tree files would be overwritten by checkout:
        a.c
Please move or remove them before you switch branches.
Aborting

这时候你可以将同名的文件重命名

mv filea filea1

然后再使用你想使用的命令。

 

  • 若出现拒绝合并的错误信息时

refusing to merge unrelated histories

在命令后加--allow-unrelated-histories参数即可

git pull origin master --allow-unrelated-histories

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值