Git同步上游并保留自己本地的修改

Git同步上游并保留自己本地的修改

前言

最近在折腾GitHub一些开源的项目,但是开源的达不到我想要的效果,于是就自己魔改,那就肯定得同步上游,并且保留自己的改动.

克隆仓库

git clone https://github.com/org/rep.git

这里我插一腿,有托管的记得改remote url


添加upstream

git remote add -t master -m master upstream 'https://github.com/org/rep.git'

这个命令多几个参数是因为我那个项目分支太多,而我只需要master分支

git remote add upstream 'https://github.com/org/rep.git'

一般来说都是用的上面这个命令


同步上游

git fetch upstream


合并上游

两种方式

git merge --squash upstream/master

--squash就合并成一个commit,没有的话上游几个就几个

这个没什么好说,你用git pull的时候就是git fetch + git merge


git cherry-pick -n A^..B : [A,B]的commit 全合并过来 (包含A B)

git cherry-pick -n A..B : (A,B]的commit 全合并过来 (不包含A 但包含B)

这个有必要说一下, 上面这条命令就是多条commit合并,这里我初学的时候犯了一个错误

error: empty commit set passed查了半天,原来是AB顺序错了

AB正确顺序: 提交commitA的时间一定要比B早, 图片只是举例子


git cherry-pick commitA commitB 要commit的sha6位就行了,没必要全部

单条 或者 选择多条不同的commit的话,用上面这个


提交

git push origin master

git merge带了--squash参数就得自己先写了git commit -m 'commit'在push

git cherry-pick带了-n参数的话也得自己先写commit


后话

提交的话,我个人是比较偏向HTTPS的,比较方便,SSH的还得生成key在导入到托管平台.

以GitHub举例, 现在已经停止了password验证,得用access token


GitHub access token用法

申请链接: https://github.com/settings/tokens

一般选这两个 repoworkflow

Expiration是有效期,自己定


git push之类的话, access token就是你的credential密码

或者把remote url改成https://[email protected]/org/repo.git这种形式

猜你喜欢

转载自blog.csdn.net/a924282761/article/details/125713233