一般开发流程
1、首先从远程仓库拉取代码
Git clone
2、然后在本地新建一个新的分支
git checkout -b 分支名
3、然后把本地的新分支push到远程仓库
git push origin xxx
4、再关联本地分支和远程分支
git branch --set-upstream-to=origin/xxx
5、再拉取远程主分支的最新代码
git pull origin main
6、然后编写业务代码,将代码存到暂存区
git add .
7、再将代码提交到本地仓库
git commit -m "xxx"
8、再进行rebase,再拉取一次最新代码
git pull --rebase
这相当于把你在新分支上的所有新commit依次cherry pick到要merge的分支的最新commit后面,这样后续的merge就一定会是一个非常爽的fast forward。而且在rebase的同时可以进行squash,把逻辑上相似的commit都塞到一个commit里面,然后给他一个描述性比较强的commit message。这套操作下来之后commit历史会非常清晰一目了然
9、如果有冲突,解决冲突后,重新提交(git add + git commit),再将代码push到远程仓库
git push
10、然后提交pr,等待code review
git checkout -b feature/220706-new-github-action-yml git push origin feature/220706-new-github-action-yml git branch --set-upstream-to=origin/feature/220706-new-github-action-yml git pull origin main
合并分支到master
git checkout master
git merge dev
git status
git push origin master
撤销指定版本
git revert [commit号] 撤销指定的版本
git log可以查到commit号
解决冲突
git fetch;
git checkout 原分支(本地分支);
git merge origin/ 目标分支;
解决冲突
git add .
git commit
git push origin 原分支;
其他命令
统计代码行数:git log --since="2023-06-01" --before="2023-07-22" --author="$(git config --get user.name)" --pretty=tformat: --numstat | awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }'