总结
git 操作相关
1、创建新分支并切换到该新分支以及常用git操作
git checkout -b newfeature
查看文件修改情况 :git status
提交所有已更改文件 :git add .
提交本地文件到本地仓库:git commit -m "XXX"
提交本地更改到远程仓库:git push
。如果远程仓库没有合本地本分支对应的分支,使用 git push --set-upstream origin master(省略形式为:git push -u origin master)
2、添加其他的仓库作为远程仓库 ,可将仓库的代码同步到其他仓库
git remote add xyz
git remote add xyz git@git.corp.xxx.git
git remote // 查看远程的分支
git push xyz // 将当前分支推送到对应的远程仓库
3、git 回退代码
git log
git reset --hard e9c7f41d9cd54e659de7e412fbc05a0dd9179101
git push -f -u origin master // 强制推送
4、Git message 提交 Type
* feat:new feature,新的功能
* fix:bug fix
* refactor:代码重构,没有功能修改
* optimize:性能优化、增加日志打点等,没有功能修改
* style:代码格式修改,没有任何代码语义的变化
* doc:文档、注释修改
* test:添加或者修改测试用例,没有线上代码修改
* build:发布新版本、pom 修改、等构件发布,没有线上代码修改
* revert:之前提交的revert,由 git revert 命令生成
* WIP:Work In Progress,还没有完成的功能,为了尽可能让提交保持合适的大小
PS. 按照上述类型提交时方式为: git commit -m "feat: 新增成员tab" (feat后英文冒号空格)
PPS. 可安装包实现git cz 命令,自动提示以上几种命令。使用gitmoji -c 提交带提交类型emoji :http://www.mianshigee.com/project/gitmoji-cli
5、git将当前分支上修改的东西转移到新建分支
不需要在A分支做commit,只需要在A分支新建B分支,然后切换过去。这个时候你会发现修改的东西在A,B分支都有。这个时候在B分支commit,那么这些修改保留在B分支上,再切换到A分支上会发现修改都没有保留下来。
6、master分支的代码领先自己的分支,git 如何把master分支代码合并到自己的分支
1.首先切换到主分支
git checkout master
2.使用git pull 把领先的主分支代码pull下来
git pull
3.切换到自己的分支
git checkout xxx(自己的分支)
4.把主分支的代码merge到自己的分支
git merge master
5.git push推上去ok完成,现在 你自己分支的代码就和主分支的代码一样了
git push origin 自己分支名
PS. 开新分支之前要先pull,就是防止别人在此之前往master分支中提交新的代码,等你提交完push的时候会发生冲突。多人合作写代码前,一定要先pull,养成一个好的习惯。
7、 解决合并的冲突
依次找到冲突的文件,搜索“>>>>>” 找到current change 和 incoming change ,对比更改的文件,小心确认。以免merge丢了代码。(同事的一次优化代码弄丢代码上线bug)
8、同一个仓库,拉取别人分支的代码到本地
先切换到master
执行 git fetch // 使得本地分支和远程所有分支同步
然后同步同事的B分支到我的本地:git fetch origin B
切换到 B :git checkout B
9、更改了远程仓库的地址,本地仓库实现关联新地址
git remote // 查看远程仓库
git remote -v //查看远程仓库地址
git remote set-url origin git@XXXX.git // 修改远程的地址
10、迁移仓库(包括代码、分支、提交记录)
新仓库要为空,三步操作git项目迁移。
git clone --bare http://域名/分组/仓库名称.git
cd 仓库名称.git
git push --mirror http://新域名/新分组/新仓库名称.git
11、本地暂存,不想提交到远程但是可以本地保存修改记录
常用git stash命令:
(1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
(2)git stash list :查看stash了哪些存储
(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1} (ps,最好不要直接这么用,可能会丢失代码,如果之后还想用这次的代码的话。。)
(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
(8)git stash clear :删除所有缓存的stash