dev和master合並沖突解決
git命令總結
- git add總結
· git add -A 提交所有變化 · git add -u 提交被修改(modified)和被刪除(deleted)文件,不包括新文件(new) · git add . 提交新文件(new)和被修改(modified)文件,不包括被刪除(deleted)文件
- 克隆遠程倉庫
git clone git-address
- 刪除所有本地分支,除了DEV
git stash && git checkout dev && git branch | grep -v "dev" | xargs git branch -D
- 刪除緩存,添加ignor
git rm -r --cached .
git add . git commit -m 'update .gitignore'
- 添加變更並提交
git add -A # A表示把所有更新添加到臨時區 git commit -m "注釋"
- 拉最和推送代碼
git pull # 拉取 git push # 推送
- 刪除緩存,過濾文件通用代碼.gitignore
git rm -r --cached .
git add . git commit -m 'update .gitignore'
- 新建本地分支
git checkout -b 123;
- 本地分支推到遠程,並建立關聯
git push --set-upstream origin 123
- 標簽tag的操作
git tag #查看版本 git tag [name] #創建版本 git tag -d [name] #刪除版本 git tag -r #查看遠程版本 git push origin [name] # 創建遠程版本(本地版本push到遠程) git push origin :refs/tags/[name] # 刪除遠程版本
- 合並rebase分支
git checkout dev
git pull --rebase
git checkout my
git rebase dev
# 解決沖突 git add -A git rebase –continue git push -f # 自動全並COMMIT:git commit --amend --no-edit 如果代碼沒有沖突,5,6,7可以省略
- 將多個commit合並成一個
git merge-base origin/dev my
# display your hashcode git reset --soft `your hashcode` git add -A git commit -m "commit" git push -f
- 將本地倉庫上傳到線上
1. 在遠程建立一個倉庫,它有https和ssh的地址 2. 本地建立倉庫文件夾 mkdir validate 3. 在進行文件夾,cd validate 4. git初始化,git init 5. 映射遠程倉庫,git remote add origin git@git.i-counting.cn:bfyxzls/schedle.git 6. 添加一個readme.md文件 7. 添加它到本地倉庫,git add readme.md 8. 提交本地,git commit -m "initial" 9. 將本地倉庫提交的內容推到遠程倉庫的對應分支,git push -u origin master 10. 大功告成
- 查看提交的日志
git log --oneline //會列出所有commitId
- 直接切換到歷史版本
git reset --hard commitId
- 打標簽
我們可以為某個時間點上線的版本打個標簽,當這個版本有問題時,可以去還原它。
- 列表所有標簽
git tag - 篩選標簽
git tag -l 'v1.4.*' - 新建標簽
git tag -a v1.4 -m '對標簽的描述' - 顯示標簽的具體信息
git show v1.4 - 上傳標簽
git push origin v1.5
前景
master主分支,dev是開發分支,master會保持最新的dev代碼
問題的產生
- dev開發新功能
- 版本發布,dev合並到了master,發布生產環境
- 新需求來了,在dev進行開發
- 同時,線上代碼有bug,從master拉新分支,改bug,之后合並到master
- master與dev這時代碼不一致,以后合並有可能會有沖突
- dev開發完成,上線前,先與最新master做一下rebase,解決沖突
- git rebase會根據你的git commit進行沖突解決,每次都要進行git rebase --continue,這是比較煩人的
- git log找到dev是在哪個commit里合並到master的,找到后git reset --soft 把dev新需求合並成一個commit
- 最后再git rebase就可以了
相關git命令
找與master相同代碼時的commit id
$ git log
commit 9f4c0939ce30aca3f4e18e69b2deed7b721b3ebb (HEAD -> master) Author: lind <bfyxzls@sina.com> Date: Sat Apr 27 12:45:24 2019 +0800 master2 commit 09b6898a5b32ac5e23745f7b343424170869045a Author: lind <bfyxzls@sina.com> Date: Sat Apr 27 12:44:48 2019 +0800 master1 commit c9507744d6528a3df9529d92953c896a4c2d38a7 Author: lind <bfyxzls@sina.com> Date: Sat Apr 27 12:43:28 2019 +0800 dev2 commit 817d0275820c83acdf5513a5fd5855a6eb84443c Author: lind <bfyxzls@sina.com> Date: Sat Apr 27 12:42:59 2019 +0800
合並commit
$ git reset --soft c9507744d6528a3df9529d92953c896a4c2d38a7 $ git add . $ git commit -m "合並commit"
在rebase時,沖突提交數為1個,之前是dev有幾次新的提交,就要解決幾次
$ git rebase master
Administrator@WIN-1AL08P10TJ8 MINGW64 /c/testgit (dev|REBASE 1/1)
解決沖突,刪除或者保留對應的代碼,最后再保存,提交即可
Administrator@WIN-1AL08P10TJ8 MINGW64 /c/testgit (dev|REBASE 1/1) $ git add . Administrator@WIN-1AL08P10TJ8 MINGW64 /c/testgit (dev|REBASE 1/1) $ git rebase --continue Applying: 合並commit Administrator@WIN-1AL08P10TJ8 MINGW64 /c/testgit (dev)
