0、最简单的方法
1、在github或gitlab上创建一个新项目。
2、将空仓库直接git clone下来(https方式),此时环境配好。
3、直接pull/push即可。
说明:之前配置ssh方式来访问公司搭建gitlab一直不成功(github成功)暂时未找到问题,只能先用这个方法(https方式)解决。
1、前期配置
1、先在官网创建相应的项目仓库。
2、生成ssh密钥
ssh-keygen -C 'your@email.address' -t rsa
可以一直回车,使用默认值
密钥保存位置,其中.pub是公钥,要在github上(头像 >> Settings >> SSH and GPG keys)添加ssh key(公钥里面的内容)
添加ssh key界面
# 添加私钥命令
ssh-add /root/.ssh/id_rsa
# 如果报错
Could not open a connection to your authentication agent.
# 解决
ssh-agent bash
# 再输入一遍添加私钥命令即可
ssh-add /root/.ssh/id_rsa
设置用户名和邮箱,注意 user.name 即 www.github.com/{user.name},未设置此项可能无法计算 contribution,查看 commit 日志发现是系统用户名提交的 。
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
2、下载
git clone http://git.XXXX.com/XXX/lx_express.git # 如果是私有仓会提醒输入账号密码
3、上传
进入本地相应项目文件夹(与第一步创建的仓库名一致)
git init
git add .
git commit -m 'first commit'
# 设定远程仓库
git remote add origin git@github.com:XXXX/XXXXX.git
# 提交到远程
git push origin master
# 更新本地代码
git pull
这是刚建的仓库里面有我的文件了。
4、遇到的问题
问题1:
error: Your local changes to the following files would be overwritten by merge:
main.py
Please, commit your changes or stash them before you can merge.
Aborting
说明:
出现这个问题的原因是其他人修改了a文件并提交到版本库中去了,而你本地也修改了a文件,这时候你进行git pull操作就好出现冲突了,解决方法,保存修改过的本地代码到git栈中,然后更新线上内容,等需要再把修改的内容弹出。
git stash # 将工作区恢复到上次提交的内容,同时备份本地所做的修改
git pull # 可以正常git pull
git stash pop # git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区
命令说明:
git stash # 备份当前的工作区的内容,从上一次提交中读取相关内容,让工作区保证和上次提交的内容一致。
#同时,将当前修改过的工作区内容保存到Git栈中。
git pull # 拉取服务器上的代码;
git stash pop # 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list # 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear # 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
转自:https://www.jianshu.com/p/920ad324fe64
问题2:部分文件夹后面接了一个@,即导向
原因:这个文件夹之前也是一个git项目,里面还保存了git相关信息。
解决:我是重新创建了仓库,同时将此文件夹的git信息都删了,只保留代码文件,提交即可。
问题3:insufficient permission for adding an object to repository database .git/objects insufficient permission for adding an object to repository database .git/objects Error building trees
权限问题,直接在项目根目录
sudo chmod 777 -R .git/objects