当前位置:   article > 正文

git冲突解决方法以及常见命令_git合并冲突

git合并冲突

情景一:相同分支
git add .把变更的文件提交到暂存区
git commit -m “xxx” 提交变更到版本库
git push之后发现冲突
git pull 同步,在执行合并的时候发生了冲突
首先做一次同步,成员对项目做一次自己的提交,推给远端库,git push
提交发生冲突,一种成员负责的内容不同,git pull 自动合并冲突,一种成员负责的内容相同产生冲突,需要手动解决冲突之后git push
情景二:不同分支
git rebase整合不同分支的变更
首先,要把主干分支整合到特性分支是可以使用git merge和git rebase
在特性分支执行git merge master的时候,git会以双路和公共祖先创建一个新的快照,基于快照创建一个主干分支和特性分支的合并节点,并将特性分支指向这个新的节点
在特性分支执行git rebase master的时候,从公共祖先开始,将特性分支上每个提交的变更暂存起来,以主干分支指向的提交为新的节点,将暂存的变更按照顺序还原为新的提交

  • git merge可以向前提交推进历史
  • git rebase会重写提交历史
  • 但最终特性分支指向的快照完全相同

合并存在冲突的时候:
git merge在合并时解决冲突,创建新的提交包含解决冲突所做的修改,
git rebase,在rebase的过程中解决提交,
此处建议git rebase,merge增加节点,提交历史不清晰
交互式rebase:参与提交搬移的过程
git rebase -i master唤醒编辑器,修改文档,编辑todo list,每个提交对应指令:

  • pick(默认)
  • reword:选用该提交,同时修改提交信息
  • squash:选用该提交,但将其变更压缩到上一个提交中,不单独生成提交
  • drop:舍弃该提交以及相关的变更

其他git命令:

# 在当前目录新建一个仓库
git init

# 查看配置
git config [--local][--global][--system] --list

# 查看远程仓库地址命令
git remote -v

# 创建分支
git branch [branch-name]

# 从工作区添加指定文件到暂存区
git add [file-name1] [file-name2] ... 

# 将暂存区所有文件添加到本地仓库
git commit -m "[massage]" 

# 从远程仓库拉取代码到工作空间
git pull 

# 查看分支历史
git log

# 工作区与暂存区比较
git diff

# 用于合并指定分支到当前分支
git merge [branch-name] 

# 切换分支
git checkout [branch] 

# 隐藏当前工作的修改
# 如果不隐藏自己修改的半成品代码,就会发生切换到别的分支后,将然后自己的半成品代码带入其他分支,这样就发生很多不必要的麻烦。
git stash 

# 合并多次提交
# 非关键性的提交太多会让版本历史很难看、冗余,所以合并多次提交也是挺有必要的。
# 同样是使用以上的变基命令,不同的是变基命令打开的文本编辑器里的内容的修改。
# 将pick修改为squash,可以是多行修改,然后保存退出。
# 这个操作会将标记为squash的所有提交,都合并到最近的一个祖先提交上。
# 注意:不能对的第一行commit进行修改,至少保证第一行是接受合并的祖先提交。
# -i参数表示进入交互模式。
git rebase -i <commit range>

# 合并前两个历史提交,
# 会弹出vim修改信息,修改第二行的pick为s,或者为squash,squash为合并的意识,
# 然后保存退出编辑,会打开第二个vim编辑,合并并修改commit内容,
# 保存退出会产生一个新的commit id,这样就合并了两个commit
git rebase -i HEAD~2

# 显示此次提交的修改
git show [commitid]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

⼯作区:在电脑上你要改动你的代码或⽂件的⽬录。
暂存区:英⽂叫 stage 或 index。⼀般存放在 .git ⽬录下的 index ⽂件(.git/index)中,我们把暂存区有时也叫作索引(index)。
版本库:⼜名仓库,英⽂名 repository 。⼯作区有⼀个隐藏⽬录 .git ,它不算⼯作区,⽽
是 Git 的版本库。这个版本库⾥⾯的所有⽂件都可以被 Git 管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以还原。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/632446
推荐阅读
相关标签
  

闽ICP备14008679号