我正在参与「启航方案」

1. 怎么将本地项目上传到长途库房

场景:搭建项目之初,一般都是先在本地写个demo,一步一步逐步完善,可是往往常常写的告一段落之后需求借助git工具进行留存,这个时分就需求将本地项目上传到长途库房。

实现:

  1. 现在github树立一个空的库房,然后找到库房地址
  2. 在本地项目的根目录下履行如下指令
# 初始化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,那么就能够把本次迭代的全部内容分次提交到一同,就能够经过这种方式,这样能够节约最终收拾以及兼并提交记载的时刻,

实现:

  1. 一个功用的开发,初次提交就把commit提交记载写好,这样后面的每次提交都能够兼并到这次commit,当然后面想改commit的描述也是随时能够改的
  2. 在项目中履行如下指令
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.

我在工作中使用Git的心得以及常见问题的解决

处理方案:

  1. 履行ssh-keygen -t rsa -C “你的git账号”

然后一直回车,直到出现下图:

我在工作中使用Git的心得以及常见问题的解决

  1. 履行: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