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

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

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

场景1

背景:项目环境复杂,项目分为新区和旧区,旧区代码为基础代码,新区代码是从旧区拆分出来的,通常状况下,若是新旧区都上线,须要从旧区拉取分支markdown

问题:同一个问题在新旧区都有,迭代须要同时发布,本应该旧区拉分支,可是开发时重新区拉了分支,如今想合到旧区,新区代码没法向前合并到旧区,怎么办。。。app

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

GIT高级思惟:工具

1.git log

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

a.git diff commit1 commit2 commitId能够取前六位 image.png b.git diff --name-only commit1 commit23d

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标签记录

相关文章
相关标签/搜索