git pull && git fetch
通过一张图了解下,git fetch和git pull的概念:
- fetch:将远程主机更新内容拉到本地,用户检查后决定是否合并到工作分支上。
- pull:将远程主机更新内容拉到本地直接合并,git pull = git fetch + git merge,这样可能产生冲突。
git pull的问题是把过程中的细节隐藏起来了,一旦代码有问题就很难找到出错的地方。
git stash
当你在一个分支上在进行开发时,临时需要切换到另一个分支解决一些比较紧急的事情,问题是你才工作了一般,你不想回不到这个工作点,这时就需要用git stash命令了。
git stash 是“储藏”的意思,可以获取你工作目录的中间状态,修改过的追踪文件可以放到一个未变更的堆栈中,随时可以重新应用。
-
git stash(这个) 保存当前的工作进度。会分别对暂存区和工作区的状态进行保存。
-
git stash save “message…” 这条命令实际上是第一条 git stash 命令的完整版。
-
git stash list 显示进度列表。此命令显然暗示了git stash 可以多次保存工作进度,并用在恢复时候进行选择。
-
git stash pop(这个) 如果不使用任何参数,会恢复最新保存的工作进度,并将恢复的工作进度从存储的工作进度列表中清除。
-
git stash apply 除了不删除恢复的进度之外,其余和 git stash pop 命令一样。
-
git stash clear 删除所有存储的进度。
git rebase
合并代码有两种方式:
- git merge
- git rebase
git rebase目的是对一段线性提交历史进行编辑,删除,复制,黏贴,通过rebase可以使我们的提交历史感觉,整洁。
不要通过rebase对任何已经提交到master仓库的commit进行修改。
通过rebase可以帮助我们合并多个commit为一个完整的commit。
git reset
适用于在某个提交点重新开分支。比如某个提交之后代码我们都不要了,可以在本地reset到指定commit,重新开启一个branch继续开发。
- git reset --soft 只是对现有版本库进行更改。
- git reset --hard 更改内容提交到工作区,不能恢复。
可以用来对某些提交进行撤销。