Git 高级命令

命令 作用
git log -- online 查看历史记录简介版本
git log --oneline --graph 查看什么时候出现了分枝,什么时候合并,开启拓扑图选项
git log --reverse --oneline 可以逆向显示所有的提交
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges 如果我要看 Git 项目中三周前且在四月十八日之后的所有提交,我可以执行这个(我还用了 --no-merges 选项以隐藏合并提交)

Git push


通常对于一个本地新建的分枝,例如 git checkout -b develop ,在develop分枝中commit了代码之后,如果直接执行git push 命令,在develop 分枝奖不会被push到远程仓库中(但此时,操作有可能会推送一些代码到远程仓库,这取决于我们本地git.config 配置中的push default默认行为),因此我们至少需要指定push的分枝名:eg git push origin develop ,才能讲代码推送到远程仓库。

但是,当我们通过显示制定分枝名进行初次push操作之后,本地有了新的commit 此时在执行git push 命令会有什么效果呢???

如果你未曾改过 git config 的配置文件,那么git 2.0 版本之后 通常会push失败,并且会收到如下的警告

Git 高级命令_第1张图片
屏幕快照 2017-08-15 10.40.13.png

原因是因为 2.0 之后的版本git 全局配置中的一个属性 git.default 属性,其决定了git push 操作的默认行为 ,2.0 之后这个属性改为了 simple

git.default 的值有以下可选
nothing current upstream simple matching
  • nothing - push 无效,除非指定远程分枝
  • current -push 当前分枝到远程同名分枝,(如果远程同名分枝不存在,会自定创建同名分枝)
  • upstream push当前分枝到它的upstream 分枝(经常用于push/pull到同一远程仓库的情况)
  • simple push 和upstream 类型,但是,它必须保证本地分枝和它的远程分枝同名否则拒绝push
  • matching push到本地和远端都存在的同名分枝
通过git config --global push.default 'option'改变push.default的默认行为

git pull


当我们未指定upstream 时,执行git pull 的时候通常会得到如下的提示

Git 高级命令_第2张图片
屏幕快照 2017-08-15 10.55.51.png

当我们执行git pull的时候实际上是执行git fetch + gi t merge 操作,fetch 操作将会更新本地仓库的remote tracking 并不会对本地当前代码照成影响,当我们执行merge操作的时候,如果我们没有指定当前分枝的upstream ,它并不知道我们要合并哪个分枝到当前分枝,所以通过以下代码来执行当前分枝的upstream

git branch --set-upstream-to=origin/ develop
// 或者git push --set-upstream origin develop 

你可能感兴趣的:(Git 高级命令)