处理合并冲突 Git merge conflict
创建分支并 checkout 到该分支
git checkout -b app/newapp
修改文件 a.php 的11行,保存提交
vi a.php
git add .
git commit -m 'edit a.php 11'
切换回 master 分支,也修改 a.php 的11行
git checkout master
vi a.php
git add .
git commit -m 'edit a.php 11, master'
执行合并
git merge app/newapp
会出现如下错误提示
Auto-merging app/Http/a.php
CONFLICT (content): Merge conflict in app/Http/a.php
Automatic merge failed; fix conflicts and then commit the result.
编辑 a.php 处理冲突,再 add 后提交。
设置 git alias
通过 git 自带的 alias 命令进行设置
git config --global alias.s status
以后,git status
命令就可以用 git s
来替换了。
设置的别名我们可以在~/.gitconfig
找到,同样,上述命令也可以直接通过编辑~/.gitconfig
的`[alias]段进行添加修改。
另外,也可以通过命令行进行删除该别名
git config --global --unset alias.s
通过 shell 的配置文件进行别名配置
如果你用的是 Mac 自带的 bash,可以编辑
~/.bashrc
或者~/.bash_profile
文件;如果你用的是 zsh,则编辑
~/.zshrc
增加的配置内容如下:
g=git ga='git add' gaa='git add --all' gb='git branch' gba='git branch -a' gbd='git branch -d' gcm='git checkout master' gcmsg='git commit -m' gco='git checkout' gd='git diff' gl='git pull' glgg='git log --graph' gm='git merge' gp='git push' gr='git remote'
通过 oh-my-zsh 添加 git 插件
编辑 ~/.zshrc
添加或调整如下代码
plugins=(git)
重启 zsh。即可拥有 git 插件的各种 git alias。
Git stash 改善工作流
我们的项目总会有一条主线和一条以上的分支,当我们在分支进行功能拓展的时候,如果发现主线有一些 bug 或者功能需要调整,而又不想把分支 commit ,但不 commit 又会无法 checkout 到 master 工作的时候,stash 就派上用场了。
git stash
: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop
: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash apply stash@{1}
:可以将你指定版本号为stash@{1}的工作区取出来,如果不包含stash@{1}
,则取回最近的。apply
和 pop
的区别是,pop 取出后,git 栈就会释放最近工作区,apply 只是把对应工作区应用到当前,并不释放,若要释放,需结合 git stash drop
删除某一个进度.
git stash list
: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear
: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
git stash branch <branchname> <stash>
: 基于进度创建分支。
恩恩,今天国庆,只有一个字:堵!:(