Let's enjoy in GIT -- 工具用得好,上班没烦恼

·  阅读 373
Let's enjoy in GIT -- 工具用得好,上班没烦恼

写在前面 -- 写这篇文章的契机

GIT:是一个每天都会用到的工具。每天都用不等于用得好,这篇文章将会记录更新git中遇到的问题

场景1

背景:项目环境复杂,项目分为新区和旧区,旧区代码为基础代码,新区代码是从旧区拆分出来的,一般情况下,如果新旧区都上线,需要从旧区拉取分支

问题:同一个问题在新旧区都有,迭代需要同时发布,本应该旧区拉分支,但是开发时从新区拉了分支,现在想合到旧区,新区代码无法向前合并到旧区,怎么办。。。

小白思维:旧区拉一个分支,重新修改相关问题。浪费时间,迭代发版之际重新修改代码,容易出错,不科学

GIT高级思维:

1.git log

image.png

a.git log branch1 ^branch2:查看branch1中有的commit,而branch2中没有的commit

image.png

b.git log branch1..branch2:查看branch2的log比branch1的log多提交了哪些内容

image.png

c.git log branch1..branch2:查看branch2的log比branch1的log区别,并不知道哪个分支提交的多

image.png

d.git log --left-right branch1..branch2:查看branch2的log比branch1的log区别,可以查看提交的分支, <表示branch1,>表示branch2

image.png

2. git diff:比较文件之间的不同

a.git diff commit1 commit2 commitId可以取前六位 image.png b.git diff --name-only commit1 commit2

image.png

c.差异文件打包:git diff --name-only commit1 commit2 | xargs tar -zcvf 文件名称.tar.gz

image.png

d.git diff commit1 commit2 -w 忽略所有空格

e.简略写法

HEAD:当前提交;

HEAD^:上一次提交

HEAD~X;

HEAD~0:当前提交;

HEAD~1:上一次提交

。。。依次类推

3.git show

查看某次commit的具体提交内容

a.git show commitID

b.git show HEAD:查看HEAD标签当前指向提交的完整信息

c.git show branchxx:查看branchxx分支最新一次提交的完整信息

d.git show branchxx^;git show branchxx~1:查看branchxx分支最新一次之前一次提交的完整信息 。。。依次类推

4.git cheery-pick

对于多分支的代码库,将代码从一个分支转移到另一个分支,正常我们用git merge 但是如果我们只需要部分代码变动(某几个提交),就可以使用cherry pick

a.git cherry-pick commitID:某个commitID转移到当前分支,一般放在最后

b.git cherry-pick branch:某个分支的最新提交转移到当前分支

c.git cherry-pink commitID1 commitID2一次转移多个提交

d.git cherry-pick A..B 转移A到B的所有提交,A的提交必须早于B,并且不包含提交A

e.git cherry-pick A^..B 转移A到B的所有提交,A的提交必须早于B,并且包含提交A

cherry-pick时代码冲突的解决办法

a. git cherry-pink --continue

解决代码冲突之后,第一步 git add .,然后使用git cherry-pink --continue,让cherry-pick继续执行

b.git cherry-pick --abort:放弃合并,回到操作前的样子

c.git cherry-pick --quit:退出cherry-pick,不回到操作前的样子

5.git stash

使用场景:在A分支上写代码,此时B分支需要紧急修复bug,此时A分支的代码不提交,就可以放在暂存区,git stash存起来,然后去B分支进行bug修复,修复工作完成后,回到A分支拿出暂存的文件内容

git stash之前的status

image.png

git stash

image.png

git stash之后的status

image.png

git stash list

image.png

恢复暂存的状态的命令:

a.git stash pop:不会在git stash list保存记录

git stash pop之前

image.png

image.png

git stash pop之后

image.png

b.git stash apply:会在git stash list保存记录

image.png

image.png

image.png

6.git tag

每次合并分支发版之前给即将合并的主分支打tag标签,给当前版本做个标记,以便回退到此版本。如果使用commit-sha1,大家记不住sha1码,所以用tag标签记录

分类:
前端
标签:
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改