git 远程仓库放多个项目,Permission denied 问题解决

  • Post author:
  • Post category:其他



目的

: 只建立一个remote,如github上一个项目A,然后本地不同的项目都放在A中。


方案

:通过提交不同的分支来解决


博客内容



1)本地项目提交到github上项目的分支

2)Permission denied (publickey) 问题的解决

3 ) 当前目录下clone 远程分支

4)submodule 修改和提交



本地项目提交到github上项目的分支


思路

:本地的项目建立一个branch,然后直接提交到remote。

参考 http://www.imooc.com/wenda/detail/557797

具体如下

cd local_project
# 如果没有master需要先建立
git init 
git add .
#  git config user.email ""
#  git config user.name ""
git commit -m "first add"

# 如果有master且有一次提交就
git branch local_brance
git checkout local_brance
git remote add github 。。。
git push github local_brance

如果本地和远程分支名不同

git push --set-upstream github master:server



常用



.git/config

基础的配置

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "github"]
    url = https://changhongjian:ghp_xxx@github.com/changhongjian/xxx.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
    remote = github
    merge = refs/heads/main



保存密码

git config --global credential.helper store



Permission denied (publickey) 问题的解决

如果经常使用两个remote,就容易导致这个问题。一般最好不要设置–global

git config --global --unset user.name
git config --global --unset user.email

# 重新指定
git config user.email ""
git config user.name ""

也可以用

git config --edit

手动编辑

接下来需要按照 https://www.cnblogs.com/wmr95/p/7852832.html

上面这个博客非常好,它竟然把我所有报的错误的情况都列上去了。

我这里大致记一下

ssh-keygen -t rsa -C "xxx@163.com"
# 三个回车,并看到保存的位置 /path/.ssh/id_rsa 一般是 ~/.ssh/id_rsa

#ssh -v git@github.com
#ssh -T git@github.com
# 有错误继续
#ssh-agent -s
#ssh-add /path/.ssh/id_rsa
#ssh-add ~/.ssh/id_rsa
# 有错误继续
eval `ssh-agent -s`
#ssh-add /path/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa

#vim /path/.ssh/id_rsa.pub
vim ~/.ssh/id_rsa.pub
# +yy 复制,然后放到你的github seetings里面的 SSH keys

ssh -T git@github.com
#这样就正常了,可以提交了
git push github xxx



名字不是 id_ras 的配置

Host github.com
    HostName github.com
    IdentityFile X/.ssh/your_name



当前目录下clone 远程分支

mkdir your_dir
cd your_dir
git init
git remote add github xxxx
git fetch github your_remote_brance #(似乎不需要分支名)
#git checkout -b your_remote_brance --track github/your_remote_brance
git checkout -b your_remote_brance
git pull github your_remote_brance



跟踪仓库

 git push --set-upstream github pc



submodule 的问题

如果修改了submodule ,或者建立了新的branch,并进行提交,需要注意在root 项目中还需要 git add 一下。

如果更改 branch 可能还需要,加一下这个

git config -f .gitmodules submodule.your_subproject.branch new_branch



合并分支

合并两个本地分支,直接在某个分支下运行

git merge a_branch

就可以产生冲突文件,然后自己修改

合并本地和远程分支

# 先 fetch 下来
git fetch origin develop
# 查看下不同的地方
git log -p dev_changhongjian..origin/develop
git merge origin/develop # 如果有问题就修改



版权声明:本文为ChangHongJian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。