基本流程(以码云gitee为例)
1. fork别人的仓库,或者自己新建一个仓库
建立远端项目仓库2. fork后,新建分支(这一步可以跳过,后面使用git push -u命令创建)
创建分支1创建分支2
3. windows下载安装好git命令环境,linux的话直接命令安装就好了
任意目录打开git bash4. 生成SSH添加到Gitee
- 生成ssh公钥秘钥
ssh-keygen -t rsa -C "youremail"
一路回车
公钥秘钥(id_rsa.pub)会保存到~/.ssh文件夹下cat ~/.ssh/id_rsa.pub
- 将id_rsa.pub公钥内容复制到gitee的设置中
- 测试ssh是否配置成功
ssh -T git@gitee.com
成功
5. 初始本地仓库
在工作目录下打开git bash,执行:
git init
初始化本地仓库
6. 添加远端仓库地址
- 自定义仓库名:给远端仓库地址一个代名。以下假定为repo。
git remote add <自定义仓库名> <远端仓库地址>
添加远端仓库
7. 拉取远端仓库master分支的项目内容
git pull repo master
拉取master内容
8. 创建切换新的本地分支,并关联远端分支
- 以下Feat_xxx为自定义分支名,一般设置成与跟踪的远端分支名一样
# 创建一个新的本地分支
git branch Feat_xxx
# 删除一个本地分支
git brance -D Feat_xxx
# 切换到新创建的分支
git checkout Feat_xxx
# 将新的分支发布到远端仓库上,并指定当前本地分支跟踪的远端分支
git push -u repo Feat_xxx
# 指定本地分支跟踪某一远端分支
git branch -u repo/Feat_xxx
# 或者
git branch --set-upstream Feat_xxx repo/Feat_xxx
# 查看分支跟踪关系
git branch -vv
9. 修改完本地代码后
# 添加当前目录修改了的文件放到暂存区(缓存)
git add .
# 将暂存区文件提交到本地仓库
git commit -m "your changes message"
# 将本地仓库的分支推送到远端服务器上对应的分支
git push repo Feat_xxx
10. 提交pull request,审核通过,将合并到master分支中
提交pull request11. 其他用户看到master更新了
# 查看本地分支与远端master分支区别
git log -p Feat_xxx repo/master
# 确认没问题后,将master代码pull到本地分支
git pull repo master
【踩坑操作】
一、删除已经git add的文件
- 查看暂存区文件
git ls-files
- 从暂存区删除该文件
git rm --cache 文件名
git rm --f “文件路径”,不仅将该文件从缓存中删除,还会将物理文件删除(不会回收到垃圾桶)(慎用)
- 让本地与为提交的状态与远程仓库一致:
git reset HEAD 文件名(慎用)
二、Automatic merge failed; fix conflicts and then commit the result
-
产生原因
首先这个问题产生的原因是因为你git pull 的时候会分为两步,第一步先从远程服务器上拉下代码,第二步进行merge,但是merge时候失败了就会产生上述问题。 -
解决方法:(记得做备份!!!)
- 丢弃本地提交,强制回到线上最新版本
git fetch --all
git reset --hard origin/你需要下拉的分支(默认master)
git fetch
- 保存本地提交
git reset --abort
git reset --merge
git commit -am '提交信息'
git pull
三、git reset --hard把本地和仓库文件都删除了怎么回滚恢复代码?
cat .git/refs/heads/<要恢复的分支>
找到要恢复的提交历史号码
git reset --hard <提交历史号码>
恢复代码
四、fatal: refusing to merge unrelated histories
- 解决办法
git pull origin master --allow-unrelated-histories
然后在执行push操作
网友评论