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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM