赞
踩
情景一:相同分支
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,在rebase的过程中解决提交,
此处建议git rebase,merge增加节点,提交历史不清晰。
交互式rebase:参与提交搬移的过程
git rebase -i master唤醒编辑器,修改文档,编辑todo list,每个提交对应指令:
其他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都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以还原。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。