Build SSH
git config --global user.name "用户名"
git config --global user.email "用户邮箱"
生成ssh Key
ssh-keygen -t rsa -C "用户邮箱"
在/user/.ssh中,记事本打开id_rsa copy内容添加到以下并保存
检查全局情况
git config -l
情况一:项目在本地从零开发,未commit或者pull过任何Git版本,需要将自己本地的项目上传到GitLab新建的项目中
注意不选初始化创建README.md
建立本地Git仓库
1. 初始化本地仓库。在本地项目根目录中打开Git命令行:
git init
2. 将本地项目的所有文件添加到暂存区。
git add .
3. 将暂存区的文件提交到本地仓库,并添加说明信息:
```git commit -m "说明信息"```
本地项目提交到本地仓库完成
### 将本地仓库代码推送到GitLab远端仓库
1. 首先建立本地仓库和远端GitLab仓库的关联关系:
```git remote rm origin```
```git remote add origin https://gitlab*************.git```
2. 检查关联是否已建立且争取:
```git remote -v```
3. 将代码由本地仓库上传到GitLab远端仓库,依次执行下列语句。获取远程库与本地同步合并:
```git pull --rebase origin main```
| 如果远程库不为空必须做这一步,否则后面的提交会失败,不加这句可能报错,原因是 GitLab中的 README.md 文件不在本地仓库,可以通过该命令进行代码合并。
4. 把当前分支 main 推送到远程:
```git push origin main```
## 报错分析
### 一、fatal: refusing to merge unrelated histories
说明本地和远端的git库是两个 根本不相干的 git 库,然后本地要去推送到远端,远端觉得这个本地库跟自己不相干,所以告知无法合并。解决方法,强制合并:
```git pull origin master --allow-unrelated-histories```
### 二、 [rejected] master -> master (non-fast-forward)
查看当前在哪一个分支 ```git branch```
切换到main这个分支 ```git checkout main```
```git fetch origin```
```git merge --allow-unrelated-histories origin/main```
### 三、warning: LF will be replaced by CRLF”
https://blog.csdn.net/u012757419/article/details/105614028
提交时转换为LF,检出时转换为CRLF ```git config --global core.autocrlf true```
### 四、error: src refspec main does not match any
检查当前branch是否在main
### 五、hint: Updates were rejected because a pushed branch tip is behind its remote hint: counterpart. Check out this branch and integrate the remote changes
```git pull --rebase origin main```
情况二:子目录中有Git项目时如何管理 submodule
git commit -m "说明信息"
如果Git项目下有子项目也是Git下来的,往往不能正确提交。
情况三:融合子项目
删除子项目中.git/文件夹
rm -rf xxx/.git/
删除之前提交子项目的cache
git rm -rf --cached xxx/
重新添加子项目文件夹
git add xxx