高级命令
- git rm –cached filename
只从git的track列表中删除
- git rm filename
从git的track列表以及硬盘中删除
- git rm -f filename
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
- git diff
查看未加入暂存区的修改
- git diff –cached(or staged)
查看已经加入暂存区的修改
- git mv old_name new_name
rename操作
- git reset HEAD filename
把一个已经暂存的文件标记为未暂存状态,便于分开提交,工作区修改不会丢失
- git checkout filename
丢弃工作区的修改
- git commit –amend
修改上一次的提交信息,并把暂存区的未提交的修改都提交到这个commit
- git remote add
添加远程库
git remote rename <old_name> <new_name>
git remote show
这个命令列出了当你在特定的分支上执行 git push 会自动地推送到哪一个远程分支。 它也同样地列出了哪些远程分支不在你的本地,哪些远程分支已经从服务器上移除了,还有当你执行 git pull 时哪些分支会自动合并。
- git remote -v
展示各remote详细链接
git tag命令相关
git fetch remote branch
git fetch操作会拉取远程库到本地,如果本地存在关联的分支,两个分支也不会合并,git pull相当于git fetch与git merge,大牛的操作都是使用fetch然后merge而不是直接pull,因为这样可以把合并的过程掌握在自己的手里
- git fetch –all
抓取所有远程库
- git pull –rebase
解决push操作时,本地无法提交,因为远程有新的提交,而又无法pull,因为远程的提交里面有晚于本地提交的情况,加入–rebase参数,可以把pull的基点调整为最新的远程仓库,而非本地的版本,将远程代码pull下来后,再将本地未提交的commit放在远程代码commit的后面
- git stash list
列出已经暂存的东西
- git config –global alias.
eg:
git config --global alias.co checkout
(为git checkout操作设置别名为git co)
一个比较有用的别名设置git config --global alias.unstage 'reset HEAD --'; git config --global alias.visual '!gitk'
- git checkout -b
在指定的分支(branch based on)基础上新建一个名称为new branch name的分支
- git checkout –track
创建一个跟踪远程分支的本地分支
- git branch -u remote/branch
设置当前分支跟踪的远程分支.
当设置好跟踪分支后,可以通过 @{upstream} 或 @{u} 快捷方式来引用它。 所以在 master 分支时并且它正在跟踪 origin/master 时,如果愿意的话可以使用 git merge @{u} 来取代 git merge origin/master。
- git branch -vv
关于分支的更多信息
- git push origin –delete branch
删除远程分支
- git rebase master
变基操作,它的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master)的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件,然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用。详情
- git rebase –onto master server client
以上命令的意思是:“取出 client 分支,找出处于 client 分支和 server 分支的共同祖先之后的修改,然后把它们在 master 分支上重演一遍”
- git rebase [basebranch] [topicbranch]
不切换的目标分支,直接执行变基命令,直接将特性分支topicbranch变基到目标分支basebranch
- git merge branch
合并一个分支到当前分支,fast-forward merge(快进合并)
文件 .gitignore
的格式规范如下:
- 所有空行或者以 # 开头的行都会被 Git 忽略。
- 可以使用标准的 glob 模式匹配。
- 匹配模式可以以(/)开头防止递归。
- 匹配模式可以以(/)结尾指定目录。
- 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。
星号()匹配零个或多个任意字符;
[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
问号(?)只匹配一个任意字符;
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
使用两个星号() 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。
git log 后可跟很多参数,不过大多数都属于定制显示日志的样式或者限制日期,描述长短等,具体参考:点我
- git log –graph
不懂git文件快照存储原理?看这篇