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]

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值