git diff 本身只是显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。
所以有时候你一下子暂存了所有更新过的文件,运行gid diff后却什么也没有,就是这个原因。
git diff --cached查看已经暂存起来的变化(--staged和--cached是同义词):
git difftool命令来调用emerge或vimdiff等软件输出diff的结果。
git difftoll --tool-help命令来看你的系统支持哪些Git Diff插件。
git config --global core.editor 设置你喜欢的编辑器
git commit -m "建立第一次提交的描述"
Git提供了一个跳过使用暂存区的方式,只要在提交的时候,给git commit加上-a选项,
Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤。
git rm 从暂存区域移除,然后提交。连带从工作目录中删除指定的文件,这样以后就
不会出现在未跟踪文件清单中了。
git rm -f 强制删除
git rm log/\*.log
删除log/目录下扩展名为.log的所有文件。
git log -p或--patch,显示每次提交所引入的差异。
git log -p -2只显示最近的两次提交
git log --stat 显示每次提交的简略统计信息。
git log --pretty=oneline
git commit --amend
这个命令将暂存区中的文件提交,快照会保持不变,而你修改的只是提交信息。
git reset "文件名"
可以取消暂存文件。
git checkout --
让本地文件消失,但是本地缓存不会消失。
git remote ----- 能看到origin ,这是Git给你克隆的仓库服务器的默认名字。
git remote -v 显示需要读写远程仓库使用的Git保存的简写与其对应的URL。
git fetch
从远程仓库中获得数据
如果你使用clone命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以“origin”为简写。
git pull
通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。
git push
git tag -l "v1.8.5"
只对1.8.5系列干兴趣
git tag -a v1.4 -m "my version 1.4"
建立tag标签
git tag -a v1.3 a8e45634
要在哪个提交上打标签
git push origin
在创建完标签后,显示地推送标签。
git push origin --tags
这将会把所有不在远程仓库服务器上的标签全部传送到哪里。
git tag -d
要删除掉你本地仓库上的标签。
git push origin --delete
删除远程标签的方式
git config --global alias.br branch
branch 的简写 br
Git保存的不是文件的变化或者差异,而是一系列不同时刻的快照。
Git的master分支并不是一个特殊分支。它就跟其他分支完全没有区别。之所以几乎
每一个仓库都有master分支,是因为git init命令默认创建它,并且大多数人都懒得去改动它。
Git是怎么创建新分支的呢?
很简单,它只是为你创建了一个可以移动的新的指针。
git branch testing
git branch 命令仅仅创建一个新分支,并不会自动切换到新分支中去。
git checkout testing
切换到一个已存在的分支,这样HEAD就指向testing分支了。
分支切换改变你工作目录中的文件
git log --oneline --decorate --graph --all
它会输出你的提交历史、各个分支的指令以及项目的分支分叉情况。
git checkout -b
创建一个新分支后立即切换过去。
git checkout master
git merge hotfix
合并分支hotfix到master
git branch -d hotfix
删除分支hotfix
在你解决了所有文件里的冲突后,对每个文件使用git add 命令将其标记为
冲突已解决。一旦暂存这些原本所有冲突的文件,Git就会将它们标记为
冲突已解决。
git mergetool 启动一个合适的可视化合并工具。
可以通过git ls-remote
git remote show
远程仓库名字,“origin”与分支名字“master”一样,在Git中并没有任何
特别的含义一样。
git push origin serverfix
Git自动将serverfix分支名字展开为
refs/heads/serverfix:refs/heads/serverfix
推送本地的serverfix分支更新远程仓库上的serverfix分支。
git push origin serverfix:serverfix,推送本地的serverfix分支,
将其作为远程仓库的serverfix分支。
git push origin HEAD:refs/for/master
git push origin serverfix:awesomebranch来将本地的serverfix分支
推送到远程仓库上的awesomebranch分支。
git fetch origin
这样情况下,不会有一个新的serverfix分支-----只有一个不可以修改的
origin/serverfix指针。
可以运行git merge origin/serverfix将这些工作合并到当前所在的分支。
如果想要在自己的serverfix分支上工作,可以将其建立在远程跟踪分支之上。
git checkout -b serverfix origin/serverfix
这会给你一个用于工作的本地分支,并且起点位于origin/serverfix
git checkout -b sf origin/serverfix
本地分支sf会自动从origin/serverfix拉取
设置已有的本地分支跟踪一个刚刚拉取下来的远程分支,或者想要修改正在
跟踪的上游分支。
git branch -u origin/serverfix
如果想要查看设置的所有跟踪分支,可以使用git branch --vv
当git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录
中的内容。它只会获取数据然后让你自己合并。
git pull都会查找当前分支所跟踪的服务器与分支,从服务器上抓取数据
然后尝试合并入哪个远程分支。
由于git pull的魔法经常令人困惑所以通常显式地使用fetch与merge命令会更好一些。
git push origin --delete serverfix
删除一个远程分支。
基本上这个命令做的只是从服务器上移除这个指针。Git服务器通常会保留
一段时间知道垃圾回收运行,所以如果不小心删除掉了,通常是很容易恢复的。