git常用命令
git教程
配置
- 用户信息
1 | git config --global user.name "John Doe" |
文本编辑器
1
$ git config --global core.editor emacs
差异分析工具
1
$ git config --global merge.tool vimdiff
记住密码
1
$ git config --global credential.helper store
查看配置信息
1
$ git config --list
获取帮助
1
2$ git help <verb>
如:$ git help config不忽略空文件夹
1
在空文件夹下面创建一个.keep文件
新增库
1 | # 本地 |
查看状态
1 | # 查看当前状态 |
查看提交历史
1 | # 默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面 |
https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%92%A4%E6%B6%88%E6%93%8D%E4%BD%9C
文件操作
分支操作
创建分支
1 | # 基于本地 master 分支创建分支 |
合并分支
1 | # 正常合并分支代码 |
删除分支
1 | # 删除本地分支 |
从某个分支检出单个文件
1 | $ git checkout [branchName] -- [fileName] |
关联远程库
1 | # 本地库关联远程库,在本地仓库目录运行命令 |
回滚操作
1 | # 修改上次提交,最终只有一个提交 |
其他
1 | # 查看日志时过滤掉 merge commits |
分支
新建分支
1
git branch testing //在当前commit对象上新建一个分支指针
当前分支
1
head指针指向的分支(git branch 查看所有分支,带*号的为当前分支)
切换分支
1
2
3git checkout testing
git checkout -b testing
git checkout -b serverfix origin/serverfix //切换到新建的 serverfix 本地分支,其内容同远程分支 origin/serverfix 一致合并分支
1
2
3git merge testing //将testing分支与当前分支合并(合并的结果将最为一次新的提交)
// 类型一:Fast forward合并,分支不分叉(c1->c2->c3)
// 类型二:分叉合并,由当前分支的最后一次提交、要合并进来的分支的最后一次提交和两者的共同祖先共同确定。删除分支
1
git branch -d testing
远程操作
推送分支
1
2
3
4
5git push (远程仓库名) (分支名) 如:git push origin testing
git push origin serverfix:serverfix //上传我本地的 serverfix 分支到远程仓库中去,仍旧称它为 serverfix 分支
git push origin new-local-branch-name: new-local-branch-name //上传新命名的本地分支获取远程库所有更新
1
2
3
4git fetch origin
//来同步远程服务器上的数据到本地该命令首先找到 origin 是哪个服务器,
从上面获取你尚未拥有的数据,更新你本地的数据库,然后把 origin/master 的指针移到它最新的位置上
//并不会将远程分支同步到本地合并分支
1
git merge origin/serverfix //将远程分支合并到本地分支
在远程创建一个与本地 branch_name 同名的分支并跟踪
1
2
3git push --set-upstream origin branch_name
或
git push -u origin branch_name在本地创建一个与 branch_name 同名分支跟踪远程分支
1
git checkout --track origin/branch_name
获取第三方远程库更新
1 | git remote add upstream https://github.com/vuejs/vue.git |
常见问题
- 乱码 git config –global gui.encoding utf-8
new
git init
git commit
git log
git checkout -b test
git checkout -b test origin/aaa
git status
git add .
git add a
// –squash 将多次提交信息合并成一个提交融合进当前仓库
//squash 压缩,压扁
git merge –squash feature1
git log
git log –文件名
git diff
// 比较分支
git diff 分支1 分支2 // 以分支1为基准
git diff 提交1hash 提交2hash
// 查看谁提交的
git blame a
// 删除远程分支
git push [远程名] :[分支名]
git push origin :test
// 删除本地分支
git branch -d test
// 打补丁
git diff master > a.patch
git apply a.patch
// 把另一个分支的某次提交融到一个分支
// 当分支差异大,无法全部融合的时候,融合某一次提交
git cherry-pick
// 还原
git revert 提交hash // 将修改逆向运行一次,并重新提交
arc diff