Git 多人开发常用操作

 本地分支推送到远程分支上

git push --set-upstream origin [远程分支名]

取别人的commit到自己的分支上

git cherry-pick [commit id] 单个

git cherry-pick [x..y] 范围

git cherry-pick --abort 放弃捡樱桃

假设有三个commit id

commit a 信息a

commit b 信息b

commit c 信息c

首先checkout到其他分支拉取最新代码,然后git log 查看记录,然后切回自己的分支

因为cherry-pick是左开右闭区间,所以要获取信息b到a的commit 就要 git cherry-pick c..a

注意事项: 如果提示 fatal: Invalid revision range c.. a, 一般是因为a是最新的commit,但是本地没有拉取最新代码,所以无效范围

 

移除 commit 中的 merge branch

1.当前local分支git reset --hard 到merge branch 的前一个commit id;
2.在local 分支 新切一个分支git checkout -b newBranch;
3.git cherry-pick [local 分支 merge 之后的commit id]
4.git log --oneline 获取commit id
5.git checkout local
6.git cherry-pick [git log中的commit id]
7.git pull origin dev
8.git push -f

 

撤销某个commit

git revert [commit id]

合并多个commit为一个

  1. 切到dev分支, pull最新的代码
  2. 切回local分支
  3. 通过 git rebase -i xxx(xxx为local分支第一次提交之前的commit哈希值)将本地的多次提交合并为一个, 以简化提交历史
  4. git reset --soft HEAD^ (撤回上次的提交,因为已经合并了,所撤回的是所有的修改)  可选
  5. git push -f (强推, 因为本地commit hash值和远程服务器commit hash值不一样,所以需要强推)

撤回提交的commit

git reset --soft HEAD~N/[commit id] 撤回前N次提交的commit, 保留commit之后的文件修改

git reset --hard HEAD~N/[commit id] 撤回前N次提交的commit,不保留commit之后的文件修改

commit修改注释

git commit --amend 修改上一次的commit

如果是要修改某次的commit message 

1. git rebase -i HEAD~3
2. 进入编辑器 把pick改成edit
3. 保存后退出编辑器
4. git commit --amend 修改信息
5. git rebase --continue
6. git puh -f

重置到任意commit id 提交状态

一般是在错误操作导致当前commit id混乱的时候使用

git reset --hard/--soft [commit id]

如果此时ahead了X个commit,那么再git reset --soft HEAD~X 

 

当分支很长时间未处理时,使用reset 到dev分支上,然后cherry-pick每次的commit

git checkout -B temp [保险起见,怕操作错误]

git reset --hard origin/dev

git cherry-pick [commit id]

生成patch和打patch

  • 生成patch

commit ID A

commit ID B

commit ID C

commit ID D

 

如果需要分别生成ABC三个commit的patch ->   git format-patch D

如果需要生成A一个patch -> git format-patch B

  • 打patch

git apply xxx.patch [打patch到changes中]

git am x.patch  [直接commit] 报错 Patch format detection failed

原因:git am 必须使用的是用git format-patch 生成的patch文件来打补丁,而不能是使用git diff生成的patch.如果使用的是git diff生成的patch,会出现下面这个错误.

换种打法

git apply webpack-3-to-4.patch

  • 不想打了

git am --abort

 

git pull origin dev 失败 

错误信息 => fatal: Need to specify how to reconcile divergent branches.

解决方法: 使用git fetch + git merge

git fetch origin dev:dev

git merge origin/dev 

配置git默认编辑器

git config --global --edit // ubuntu

[core]
    editor = gedit

 

posted @ 2021-12-14 14:06  一路向北√  阅读(1556)  评论(0编辑  收藏  举报

web应用开发&研究 -

业精于勤而荒于嬉。

工作,使我快乐。


Font Awesome | Respond.js | Bootstrap中文网