命令 | 作用 |
---|---|
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失败,并且会收到如下的警告
原因是因为 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 pull的时候实际上是执行git fetch + gi t merge 操作,fetch 操作将会更新本地仓库的remote tracking 并不会对本地当前代码照成影响,当我们执行merge操作的时候,如果我们没有指定当前分枝的upstream ,它并不知道我们要合并哪个分枝到当前分枝,所以通过以下代码来执行当前分枝的upstream
git branch --set-upstream-to=origin/<branch> develop
// 或者git push --set-upstream origin develop