Git常用场景

Posted on 2022-11-26 15:47  Charlie_ODD  阅读(22)  评论(0编辑  收藏  举报

场景0:

某次迭代的开发分支已知为EI62105697_20211008_dev,如何在idea上拿到代码并开始本地开发:
右下角直接搜索

场景1:

自己切关于“EI62105697_20211008_dev”一个开发分支“EI62105697_20211008_dev_yonglang”并关联到远程:

//确保在当前分支
git checkout EI62105697_20211008_dev
//确保最新
git pull
//在该分支基础上新建分支
git checkout -b EI62105697_20211008_dev_yonglang
//do some modify
git add .
git commit -m "xxx"
//新建远程对应关联分支
git push --set-upstream origin EI62105697_20211008_dev_yonglang

场景2:【谨慎使用】

回滚远程分支到某次提交,commit号为“3dab719a48ac47bac16e3409211fc3a562cea1e0”:

git pull
//本地回滚到某次提交
git reset --hard 3dab719a48ac47bac16e3409211fc3a562cea1e0
//本地的HEAD已经指向3dab719a48ac47bac16e3409211fc3a562cea1e0
//关联远程
git push origin HEAD --force

场景3:

将自己独立的特性开发分支EI62105697_20211008_dev_yonglang合并到迭代分支EI62105697_20211008_dev

//切换到合并的目标分支
git checkout EI62105697_20211008_dev
//确保和remote一致
git pull
//合并自己的特性开发分支到当前分支
git merge EI62105697_20211008_dev_yonglang
//合并之后的commit
git commit -m "xxx"
git push

场景4:

当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。

场景5:

由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。

总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。

原文链接:https://blog.csdn.net/longgeaisisi/article/details/101842891

git stash
保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行git status命令,就会发现当前是一个干净的工作区,没有任何改动。使用git stash save 'message...'可以添加一些注释
git stash list
显示保存进度的列表。也就意味着,git stash命令可以多次执行。
git stash pop [–index] [stash_id]
git stash pop 恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
git stash pop --index 恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
git stash pop stash@{1}恢复指定的进度到工作区。stash_id是通过git stash list命令得到的
通过git stash pop命令恢复进度后,会删除当前进度。
git stash apply [–index] [stash_id]
除了不删除恢复的进度之外,其余和git stash pop 命令一样。
git stash drop [stash_id]
删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。
git stash clear
删除所有存储的进度。

场景6 :强制保持和远程分支一直,放弃本地的修改(一般是冲突太多)

git reset --hard HEAD
git merge --abort 放弃merge

场景7 : commit 太多怎么办?

git merge --squash来压缩合并
git cherry-pick commit-Id 来选择特定的提交

场景8:git pull 不下来

提示错误. 按需要执行其一:

git config pull.rebase false # merge
git config pull.rebase true # rebase
git config pull.ff only # fast-forward only 
然后还可以执行一下:git pull -f origin <分支名称>

场景9:git 撤销某次的合并

如果合并已经被推送到远程仓库,并且你想要撤销这次合并,你需要进行一次新的“反向合并”,也就是合并一个相反的更改。

git revert -m 1 <merge_commit_sha>

场景10:git 查找一个文件存在于哪些分支

git log --all 项目文件全路径      # 获取commit id
git branch -a --contains commit_id  # 获取分支名