我正在参与「启航方案」
1. 怎么将本地项目上传到长途库房
场景:搭建项目之初,一般都是先在本地写个demo,一步一步逐步完善,可是往往常常写的告一段落之后需求借助git工具进行留存,这个时分就需求将本地项目上传到长途库房。
实现:
- 现在github树立一个空的库房,然后找到库房地址
- 在本地项目的根目录下履行如下指令
# 初始化git
git init
# 提交项目全部内容
git add .
# 将提交的内容暂存
git commit -m "创立项目"
# 关键步骤,将本地库房和长途库房相关
git remote add origin https://gitee.com/vue3-series/vue3-todolist.git :
# 推送到长途master分支
git push -u origin master
2. 怎么追加当时的修改到最新一次commit
场景:一个功用开发完成之后,发现自己有遗失的提交,或许每次迭代只想提交一个commit,那么就能够把本次迭代的全部内容分次提交到一同,就能够经过这种方式,这样能够节约最终收拾以及兼并提交记载的时刻,
实现:
- 一个功用的开发,初次提交就把commit提交记载写好,这样后面的每次提交都能够兼并到这次commit,当然后面想改commit的描述也是随时能够改的
- 在项目中履行如下指令
git add .
# 会经过 core.editor 指定的修改器进行修改
git commit --amend
# 不会进入修改器,直接进行提交
git commit --amend --no-edit
# 强制推送到上一次commit
git push --force
3. 怎么兼并长途分支上的最近几个commit
留意⚠️:只适用于兼并最近几个提交记载,不是最近几回的不适用
场景:每个迭代开发过程中,一般一个功用会有一个commit,可是最终发版时,需求对本次迭代的全部内容进行兼并,那么就能够经过这个办法对长途的提交进行兼并
办法如下:
git reset commit_id
git add .
git commit -am "feature:1.1.3"
git push --force
commit_id
为兼并的一切的提交的前一个commit的值,假如提交顺序为: feat: 功用3 feat: 功用2 feat: 功用1 feat:1.1.2 需求兼并feat: 功用3,feat: 功用2,feat: 功用1为一个commit(feature:1.1.3),那么commit_id为feat:1.1.2地点的commit_id
4. git pull时遇到抵触
场景:本地开发到一半,需求获取搭档在本地长途分支上的提交,履行git pull时遇到抵触提示
处理办法:
# 1.先将本地修改存储起来
git stash
# 2. 再次拉取代码
git pull
# 3.还原暂存的内容
git stash pop stash@{0}
# 4.处理抵触 然后正常提交
git add .
git commit -m 'xxx'
git push
5. 将开发分支上的commit经过cherry-pick的方式兼并到master分支
场景:多人协同开发时,为了确保提交记载的时刻线一直为一条线,那么能够选用cherry-pick
的方式兼并代码
根本用法(cherry-pick一个提交)
feature分支的代码应用到master分支,先切换到master
分支
git checkout master
git cherry-pick <commitHash>
commitHash
为feature分支需求应用到master分支的commit-id
如果是feature分支最新一次的提交也能够运用
# feature为详细的分支名称
git cherry-pick feature
cherry-pick多个提交
git cherry-pick <HashA> <HashB>
如果是多个连续的提交能够运用
git cherry-pick A..B
留意⚠️:提交 A 有必要早于提交 B;运用上面的指令,提交 A 将不会包括在 Cherry pick 中。如果要包括提交 A,能够运用下面的语法。
git cherry-pick A^..B
代码抵触
处理抵触之后,履行
git add .
<!--git cherry-pick --continue-->
git -c core.editor=true cherry-pick --continue
之后会进入到vim修改器页面,,要跳过修改提交消息,您只需将修改器设置为不履行任何操作并报告成功的指令.类Unix系统的抱负挑选就是true指令.因此运用下面的指令替换git cherry-pick --continue
:
git -c core.editor=true cherry-pick --continue
抵触处理完毕,推送到长途分支:
git push
tip1:push之前,cherry-pick之后,抛弃兼并,回到操作前的样子
git cherry-pick --abort
tip2:push之前,cherry-pick之后,抛弃兼并,不回到操作前的样子
git cherry-pick --quit
6. 下载github的项目到本地遇到权限问题
场景:履行下载指令时报错:
Please make sure you have the correct access rights and the repository exists.
处理方案:
- 履行ssh-keygen -t rsa -C “你的git账号”
然后一直回车,直到出现下图:
- 履行:cat ~/.ssh/id_rsa.pub
会出现一堆码:
ssh-rsa AAAAB3NzaC1tP1ui5bnQVG1lyVLGXOCjtlLsjzIUfcY0LkhSZbIwibEqpR80QLfk8c1t10wNlg6Ok33AayWM63KcHuiCBgEKYgfhEBdDXYl6NVhkWn0wp93UrD1/orKzYIyeZutXnmxtorPdCpVcmbQ4XZ8WBR0OOnGBUm3XmX9XROwMTqBZ/ssZuyeDPmENEKdP8+tOhhpdhLiHtOeHAxf9uUX1D5ZUc4Wi0Ai0QB46eRRgcpOLetA36jJwpSKmjv3XOYVP7+yaUJ27HGCKq1TEdXtgnBK0mY2g+nj6nHoJmZS6jRGJN1Pi1 [xxx@163.com](mailto:macuiling1995@163.com)
然后将这个码保存到个人的github上的SSH keys
然后再履行clone指令,即可成功
7. 运用rebase删去长途分支的某个提交记载
场景:
假如现有的提交记载是:
feat: 功用3
feat: 功用2
test: 测验代码
feat: 功用1
想要删去《test:测验代码》这条记载的话,运用如下指令:
# commit_id为要删去的记载的前一个记载的commit_id
git rebase -i commit_id
# 然后会进入一个vim修改器模式,点击键盘上的字母i进入修改模式 把要删去的commit记载前面的pick改为d
# 然后点击esc退出修改,输入:wq进行保存
# 检查当时的日志是否为想要的日志
git log
# 强推到长途
git push -f