Sunday, December 24, 2023

Git 使用

常用指令

修改远程仓库地址

git remote set-url [--push] <name> <newurl> [<oldurl>]

如将 origin 的远程仓库地址设置为 http://github.com/water-law/blogs.git

git remote set-url origin  http://github.com/water-law/blogs.git

重名名分支

git branch -m oldBranchName newBranchName

删除分支

git branch -d branchName

或者强制删除

git branch -D branchName

对比两个分支的差异

git diff master...feat/XQ-2021-6-371

分段提交代码

git add -p <file>

stash 暂存指定文件

git stash push -m "WIP: XQ-2021-6-371: xxx"  Hello.java

stash 暂存

git stash save "WIP: XQ-2021-6-371: xxx"

stash 查询

git stash list

应用 stash 的代码

git stash apply stash@{N}

删除 stash

git stash drop stash@{N}

放弃跟踪某个文件

git update-index --assume-unchanged <file>

跟踪某个文件

git update-index --no-assume-unchanged <file>

git reset

语法 回退到 commit_id 提交,--soft 会保持 commit_id 到当前 HEAD 的文件修改内容, commit_id 到当前 HEAD 的提交记录会被删除

git reset --soft <commit_id>

回退到 commit_id 提交,--hard 不保持 commit_id 到当前 HEAD 的文件修改内容,commit_id 到当前 HEAD 的提交记录会被删除

git reset --hard <commit_id>

cherry-pick

cherry-pick 用于提取某个 commit 记录追加到当前分支上 拉取远程所有的分支、tag到本地

git fetch --all 

切换到远程uat分支

git checkout origin/uat

更新

git pull origin uat

从当前分支(origin/uat)检出一条处理冲突的临时分支

git checkout -b cherry-pick/feat/xq-2021-1-259_20211213 

可以先提 mr, 得到一个 commit_id(merge 的 id) aae2c1e599a8e834410a4337e93d8ffdf25593b1 在当前分支执行该 commit_id 的 cherry-pick

git cherry-pick 远程分支 mergeID -m 1

(例:git cherry-pick origin/feat/xq-2021-1-259 aae2c1e599a8e834410a4337e93d8ffdf25593b1 -m 1)

分支命名规范

需求分支

feat+/+需求号,如 :feat/XQ-2021-6-278

开发分支

dev+/+姓名+-+需求分支名,如:dev/wuxincheng-feat/XQ-2021-6-278

临时需求分支

mr+/开发分支名+-+to-feat-日期,如:mr/dev/wuxincheng-feat/XQ-2021-6-278-to-feat-20210930

临时 uat 分支

mr+/需求分支+-to-uat-日期,如:mr/feat/XQ-2021-6-278-to-uat-20210930

临时 release 分支

mr/需求分支+to-release-日期,如:mr/feat/XQ-2021-6-278-to-release-20210930

临时同步 master 代码分支

mr/syncmaster-to-需求分支-日期,如:mr/syncmaster-to-feat/XQ-2021-6-278-20210930

master 分支同步到 feat 分支

上线后,同步 master 分支代码到 feat 分支

检出 master

git checkout master

更新 master

git pull origin master

检出 feat

git checkout feat/xxx

更新 feat

git pull origin feat/xxx

从 feat 检出新分支

git checkout -b mr/syncmaster-to-feat/xxx-20220520

合并 master

git merge master

merge 这步无冲突则进行 push, 有冲突则解决冲突,commit 后再 push

push

git push origin mr/syncmaster-to-feat/xxx-20220520

提 mr

提 mr/syncmaster-to-feat/xxx-20220520 到 feat 的 mr

feat 分支合并到 uat 分支

开发分支合并到需求分支以后,开发人员通过 git pull 指令从远程拉取最新 feat 分支代码以及最新的 uat 分支代码到本地。每次合并都需要先拉取最新的 uat 分支。

从 uat 分支拉取一个 mr 临时分支,命令格式为 mr/feat/xxxx-to-uat-20220428,在本地执行 git merge feat/xxxx,以后,将mr 分支推送到远程 coding,并发起合并请求。

拉取合并请求的步骤与合并到 feat 的过程一致 评审人员处理此 checklist 可简单处理,直接通过,点击允许后,仍由国结版本发布账号处理合并,并打 tag 后执行构建计划,将版本打到 uat 服务器上。

拉取远程所有的分支、tag 到本地

git fetch --all

切换到远程 uat 分支

git checkout uat

更新 uat

git pull origin uat

从当前分支(origin/uat)检出一条处理 mr 的临时分支

git checkout -b mr/feat/xq-2021-11-159_20220428-to-uat

如果本地没有 feat 分支则执行 fetch

拉取 feat 分支到本地

git fetch origin feat/xq-2021-11-159:feat/xq-2021-11-159

有 feat 分支则切换到 feat 分支 执行 pull

git checkout feat/xq-2021-11-159
git pull origin feat/xq-2021-11-159

或者不 checkout 一次到位

git pull origin feat/xq-2021-11-159:feat/xq-2021-11-159

合并 feat 分支

git checkout mr/feat/xq-2021-11-159_20220428-to-uat
git merge feat/xq-2021-11-159

有冲突处理冲突后 commit, push,无冲突则直接 push

git commit -m "uat mr xq-2021-11-159"

推送分支到远程

git push origin mr/feat/xq-2021-11-159_20220428-to-uat

提 mr/feat/xq-2021-11-159_20220428 到 uat 的 mr


No comments:

Post a Comment

Git 增量打版抽取脚本

  patch.sh # 定义sed -i 参数(数组) # Default case for Linux sed, just use "-i" sedi = (-i) case " $(uname) " in   # For macO...