git fetch和git pull的区别
- git pull = fetch + merge
- git fetch是取回所有的最新的远程分支更新,不会对本地执行merge操作,所以本地内容不会有改变
- git pull会从服务器上分支的最新代码更新本地代码对应的分支上
git merge和 git rebase 的区别
https://www.cnblogs.com/MuYunyun/p/6876413.html?utm_source=itdadao&utm_medium=referral
git配置相关
/*设置用户的姓名,用于每次的commit*/ git config - - global user.name "lw" /*设置用户的邮箱,用于每次的commit*/ git config - - global user.email lw@example.com
git创建的仓库
/*将现有的项目转变为Git仓库或者新建一个空的仓库*/ git init /*克隆仓库*/ git clone '远程仓库地址'
git提交
/*将单个文件添加到暂存区中*/ git add 'filename' /*将当前所有文件添加到暂存区中*/ git add . /*提交文件*/ git commit -m "comment" /*添加并提交文件*/ git commit -a -m "comment"
git创建分支
git branch // 查看本地所有分支 git branch -a // 查看本地和远程所有分支 git branch <branch name> // 创建分支 git checkout <branch name> // 切换分支 git checkout -b <branch name> // 创建并切换分支
git删除分支
git branch -d <branch name> // 删除分支,无法删除未被合并的分支 git branch -D <branch name> // 强制删除分支,可以删除未被合并的分支
git push origin --delete <branch name> // 删除远程分支
git分支合并
git merge <branch> // 将branch分支合并到当前分支,当前分支拥有branch分支的记录,branch分支不变 git merge <branch1> <branch2> // 将分支branch1合并到branch2
/*git默认使用fast-farward快合并模式,会直接将要被合并的分支指向当前分支; *但是--no-ff不会,它会创建合并点; **/ git merge --no-ff <branch>
/*将两个分支合并成一个线性的提交*/ git rebase <branch>
git查看状态或记录
/** *显示文件的状态: staged,unstaged和untracked三种状态 *untracked:表示版本库中有新创建的文件,但是并为纳入版本库的管理中 *unstaged:将untracked状态的文件执行 git add 命令后文件状态就是unstaged,此时 *意味着git发现这个文件被改动了,但是改动的部分并没有提交到仓库中 *staged:表示文件已经被提交到仓库中了 **/ git status /*显示当前分支的commit记录*/ git log /*以图的形式显示当前分支的commit记录*/ git log --graph
git比较
/*工作区与暂存区之间的差别,即还没有添加到暂存区的修改,这里比较的是修改内容*/ git diff /*暂存区与上一次提交的差别*/ git diff --cached /*比较两次commit之间的差别*/ git diff <commit id1> <commit id2> /*比较两个分支之间的差别*/ git diff <branch1> <branch2>
git回退
/*将HEAD移动到commit id对应的提交点*/ git reset <commit id> /*工作区、暂存区和历史记录区都会被重置commit id提交点*/ git reset --hard <commit id>
git保存修改
git stash // 保存当前工作区和暂存区的状态
git stash save "message" // 执行存储时,添加备注,方便查找
git stash list // 查看所有的stash信息 git stash apply stash@{n} // 恢复指定stash,但不删除该stash记录,如果不指定stash@{n},则默认恢复第一个 git stash drop stash@{n} // 删除指定stash,如果不指定stash@{n},则默认删除第一个 git stash clear // 删除所有stash记录
git推送远程分支
git push // 默认推送当前分支 git push -f // 强制推送,谨慎操作,可能会覆盖代码 git push -u origin master // 将本地的master分支推送到origin主机,同时指定origin为默认主机