命令 | 作用 |
---|---|
git log -- online | 查看歷史記錄簡介版本 |
git log --oneline --graph | 查看什么時(shí)候出現(xiàn)了分枝棚点,什么時(shí)候合并顶岸,開啟拓?fù)鋱D選項(xiàng) |
git log --reverse --oneline | 可以逆向顯示所有的提交 |
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges | 如果我要看 Git 項(xiàng)目中三周前且在四月十八日之后的所有提交展鸡,我可以執(zhí)行這個(gè)(我還用了 --no-merges 選項(xiàng)以隱藏合并提交) |
Git push
通常對(duì)于一個(gè)本地新建的分枝诵盼,例如 git checkout -b develop 蓄拣,在develop分枝中commit了代碼之后,如果直接執(zhí)行g(shù)it push 命令重罪,在develop 分枝獎(jiǎng)不會(huì)被push到遠(yuǎn)程倉庫中(但此時(shí)樱哼,操作有可能會(huì)推送一些代碼到遠(yuǎn)程倉庫哀九,這取決于我們本地git.config 配置中的push default默認(rèn)行為),因此我們至少需要指定push的分枝名:eg git push origin develop ,才能講代碼推送到遠(yuǎn)程倉庫搅幅。
但是阅束,當(dāng)我們通過顯示制定分枝名進(jìn)行初次push操作之后,本地有了新的commit 此時(shí)在執(zhí)行g(shù)it push 命令會(huì)有什么效果呢茄唐?息裸??
如果你未曾改過 git config 的配置文件沪编,那么git 2.0 版本之后 通常會(huì)push失敗呼盆,并且會(huì)收到如下的警告
原因是因?yàn)?2.0 之后的版本git 全局配置中的一個(gè)屬性 git.default 屬性,其決定了git push 操作的默認(rèn)行為 漾抬,2.0 之后這個(gè)屬性改為了 simple
git.default 的值有以下可選
nothing current upstream simple matching
- nothing - push 無效宿亡,除非指定遠(yuǎn)程分枝
- current -push 當(dāng)前分枝到遠(yuǎn)程同名分枝,(如果遠(yuǎn)程同名分枝不存在纳令,會(huì)自定創(chuàng)建同名分枝)
- upstream push當(dāng)前分枝到它的upstream 分枝(經(jīng)常用于push/pull到同一遠(yuǎn)程倉庫的情況)
- simple push 和upstream 類型,但是克胳,它必須保證本地分枝和它的遠(yuǎn)程分枝同名否則拒絕push
- matching push到本地和遠(yuǎn)端都存在的同名分枝
通過git config --global push.default 'option'改變push.default的默認(rèn)行為
git pull
當(dāng)我們未指定upstream 時(shí)平绩,執(zhí)行g(shù)it pull 的時(shí)候通常會(huì)得到如下的提示
當(dāng)我們執(zhí)行g(shù)it pull的時(shí)候?qū)嶋H上是執(zhí)行g(shù)it fetch + gi t merge 操作,fetch 操作將會(huì)更新本地倉庫的remote tracking 并不會(huì)對(duì)本地當(dāng)前代碼照成影響漠另,當(dāng)我們執(zhí)行merge操作的時(shí)候捏雌,如果我們沒有指定當(dāng)前分枝的upstream ,它并不知道我們要合并哪個(gè)分枝到當(dāng)前分枝笆搓,所以通過以下代碼來執(zhí)行當(dāng)前分枝的upstream
git branch --set-upstream-to=origin/<branch> develop
// 或者git push --set-upstream origin develop