目录

  • 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

tortoisegit中的git remote_提交代码

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~