目录
- develop分支合入feature分支
- 将release分支合并到master分支
- 两个仓库迁移分支
- 1, 开发流程,以及解决问题
- 1-1 ---------- 开发完成 ,提交代码【没拉取最新的代码】 ----------
- 1-2 --- 开发完成 ,提交代码【提交拉取了最新的代码】 ----
- 1-3 ---- 发现有冲突 -----------
- 1-4 -------------→ 修复冲突 ------------------
- 1-5 --------- 如果push 失败 --------------
- 1-6 ----- 开发一部分之后,再次提交 --------
- 1-7 ---- 注意上面是--amend ,如果 git commit -v 会导致出现两个commit ----
- 1-8 ---- 如果出现两个commit,怎么解决 ------------
- 1-9 -- 已经提交过第一次的代码A,又开发新的功能代码B,现在又要修改第一次提交的代码A ,但是此次不提交功能代码B --
- 1-10 -- 已经提交过第一次的代码A,又增加了代码B, 发现提交的代码A有问题,需要重新提交A+B --
- 2,git 常用命令总结
develop分支合入feature分支
1. 在develop分支执行 git pull 获取最新代码
2. 切换到 feature分支 ,git checkout feature
3. 在feature分支,执行 git pull,获取最新代码。切记
4. 执行合并代码命令
git merge --squash develop
5. 解决冲突,提交推送
git checkout develop
git pull
git checkout m_bc_v1
git pull
git merge --squash develop
git status
# ###### 解决代码冲突 ##########
git status
git add .
git status
git push origin m_bc_v1:refs/for/m_bc_v1
将release分支合并到master分支
- 将release_1.4.0创建tag—create new — 名称: TAG_RELEASE_1.4.0_04_29
git stash save '0507-01'
git checkout release_1.4.0
# 可以看到刚刚打的tag
git pull
git checkout master
# 很重要,一定是最新的代码!!
git pull
git merge --no-ff release_1.4.0
# 可以看到: (HEAD -> master) Merge branch 'release_1.4.0' into master
git log --pretty=one
git push origin HEAD:refs/for/master
- 创建新的branchs: release_1.5.0 — 基于master分支
两个仓库迁移分支
仓库aaa的一些分支(aa-v1.0、aa-v2.0)要迁移到仓库bbb中,使得仓库bbb有分支(aa-v1.0、aa-v2.0)
# 目前在远程仓库aaa
git remote -v
origin ssh://myname@gerrit.cmss.com:29418/BC-XXX/aaa (fetch)
origin ssh://myname@gerrit.cmss.com:29418/BC-XXX/aaa (push)
# 将仓库aaa的远程分支保留在本地分支
git checkout aa-v1.0
git checkout aa-v2.0
git remote rm origin
# 可以看出已经删除了远程仓库
git remote -v
git remote add origin ssh://myname@gerrit.cmss.com:29418/BC-XXX/bbb
# 可以看出现在改成远程仓库bbb
git remote -v
# 拉取bbb仓库的代码---必须
git pull
# 可以看到远程分支已经是仓库bbb的分支了
git branch -a
# 开始迁移分支
git push origin aa-v1.0:aa-v1.0
git push origin aa-v2.0:aa-v2.0
# 可以看到分支已经成功从仓库aaa迁移到仓库bbb了
git branch -a
1, 开发流程,以及解决问题
git checkout develop
git pull
git checkout -b feature_branch_name
1-1 ---------- 开发完成 ,提交代码【没拉取最新的代码】 ----------
将commit-msg下载下来,放在仓库目录下:XXXX/gerrit项目(git仓库)/.git/hooks
git diff
git add .
git commit -v
git push origin feature_branch_name:refs/for/develop
1-2 — 开发完成 ,提交代码【提交拉取了最新的代码】 ----
git add .
git status
# 代码入栈
git stash save "搜索框封装"
git status
git checkout develop
git pull
# 拉取完最新的代码,需要又创建一个新的本地分支
git checkout -b develop_searchbox
#代码出栈
git stash pop
1-3 ---- 发现有冲突 -----------
git log 【# --------→ 拿到 commit ID】
git checkout develop
git pull
git checkout -b develop_merge_branch_name
git cherry-pick commit_id 【#---→ 把其他分支指定commit id的提交合并到当前分支】
1-4 -------------→ 修复冲突 ------------------
git add .
git status
git cherry-pick --continue 【#→ 1, 继续? 2,放弃】
git push origin develop_merge_branch_name:refs/for/develop
1-5 --------- 如果push 失败 --------------
现象:
! [remote rejected] HEAD -> refs/for/develop (change http:///+/3057170 closed)
原因:
code review已经关闭了,需要重新生成一个change-id ,再push
解决:
git commit --amend,然后删掉 change-Id 那一行,保存重新push
---------- 提交之后,如果代码没有merge,--------------------
---------- 接着这个继续在develop_merge_branch_name 分支开发 ----------
1-6 ----- 开发一部分之后,再次提交 --------
git diff
git add .
git commit --amend 【!!!!】
git push origin develop_merge_branch_name:refs/for/develop
1-7 ---- 注意上面是–amend ,如果 git commit -v 会导致出现两个commit ----
# 获取远程代码
git fetch "ssh://fuzrmela" refs/changes/65/3084665/1 && git checkout FETCH_HEAD
# 将缓存--放入--创建的新分支里面
fzuxi@LAPTOP-M89R6PII MINGW32 /e/1software/ywcp/allinOne/02_business/01/dw-carmela ((d9c0869...))
$ git checkout -b develop_luo_1
# 查看 log,可以发现有两个commit id
fzuxi@LAPTOP-M89R6PII MINGW32 /e/1software/ywcp/allinOne/02_business/01/dw-carmela (develop_luo_1)
$ git log
1-8 ---- 如果出现两个commit,怎么解决 ------------
# 撤销本地最近一次提交
git reset HEAD~
git add .
git commit --amend
git log 【#变成一个commit ID了】
1-9 – 已经提交过第一次的代码A,又开发新的功能代码B,现在又要修改第一次提交的代码A ,但是此次不提交功能代码B –
git add .
# 查看代码B修改了哪些文件
git status
git stash save '搜索框封装'
# 现在 git status , 已经看到没有任何修改
git status
# 拿到 第一次提交‘’之前‘’的 commit ID,
git log
git reset 26462e1b5dd2ce687daa1dada43cf25d3b89c9e2
# 查看第一次代码A 修改的的文件
git status
1-10 – 已经提交过第一次的代码A,又增加了代码B, 发现提交的代码A有问题,需要重新提交A+B –
首先abondon掉第一次提交的代码A
git add .
git stash
git status
git reset Head~
git status
git stash pop
git status
git add .
git status
vscode 里面进行commit
git push origin develop_agent_1_merge:refs/for/develop
2,git 常用命令总结
1、删除远程分支(需要owner有权限)
- git push origin --delete branch_name
2、删除本地分支
- git branch -D branch_name
3、创建本地分支
- git branch branch_name
4、创建本地分支,并切换到新分支
- git checkout -b branch_name
5、本地分支推送到远程
- git push origin branch_name_local:branch_name_origin
6、把其他分支指定commit id的提交合并到当前分支
- git cherry-pick commit_id
7、查看 commit log
- git log --pretty=oneline (显示单行提交历史)
8、修改最近一次未合并的提交
- git commit --amend
9、保存正在进行的工作进度
- git stash save 'message'
10、查看已经保存的工作进度
- git stash list
11、恢复指定的工作进度,stash内容并不删除
- git stash apply n (n 为stash index)
git stash pop stash@{1}
12、恢复指定的工作进度,并将恢复的工作进度从存储的工作进度列表中清除
- git stash pop n (n 为stash index)
13、清空所有存储的工作进度
- git stash clear
14、查看git 状态
- git status
15、比较差异(与最近一次git add 后对比)
- git diff
16、比较差异,具体某一文件
- git diff 文件路径+名称
20、更新本地分支列表,与远程分支保持一致
>git branch –a 用来查看所有的分支,包括本地和远程的。
>但是时间长了你会发现有些分支在远程其实早就被删除了,但是在你本地依然可以看见这些被删除的分支。
>git remote show origin 来查看有关于origin的一些信息,包括分支是否tracking。
- git remote update origin -p
- git remote update origin --prune
21、撤销本地最近一次提交
- git reset HEAD~