目的
: 只建立一个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 # 如果有问题就修改