Git 常用命令
来源:互联网 发布:mac safari下载速度慢 编辑:程序博客网 时间:2024/06/10 21:57
详细 git 教程 : progit
Git Community Book
初始化一个新的仓库
$ git init Initialized empty Git repository in .git/$ git add file1 file2 file3
获得当前项目的一个状况
$ git status
提交
$ git commit -m "first commit"
创建一个新的叫”experimental”的分支:
$ git branch experimental
创建一个新的叫”experimental”的分支,并切换到experimental分支下:
$ git checkout -b 'experimental'
当前仓库中存在的所有分支列表:星号(“*”)标识了你当工作在哪个分支下
$ git branch experimental
* master
切换到”experimental”分支
$ git checkout experimental
合并“experimental”和“master”两个分支:
$ git merge experimental
显示还没有暂存起来的改动:
$ git diff
已经暂存起来的文件和上次提交时的快照之间的差异
$ git diff --cached
提交(commit)了合并的内容后就可查看一下:
$ gitk
删除掉 “experimental” 分支 (git branch -d只能删除那些已经被当前分支的合并的分支.)
$ git branch -d experimental
如果你要强制删除某个分支的话就用git branch –D;
下面假设你要强制删除一个叫”crazy-idea”的分支:
$ git branch -D crazy-idea
撒销一个合并
$ git reset --hard HEAD
你已经把合并后的代码提交,但还是想把它们撒销:
$ git reset --hard ORIG_HEAD
显示所有的提交(commit)
$ git log
-p 按补丁格式显示每个更新之间的差异。
--word-diff 按 word diff 格式显示差异。
--stat 显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
--oneline --pretty=oneline --abbrev-commit 的简化用法。
撤消刚才的提交操作,可以使用 --amend 选项重新提交:
$ git commit --amend
显示两个分支间的差异
git diff master..experimental
想找出‘master’,‘test’的共有 父分支和'test'分支之间的差异,你用3个‘.'来取代前面的两个'.'
git diff master...experimental
显示你工作目录与上次提交时之间的所有差别
$ git diff HEAD
这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 到最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。
$ git rebase origin
取出 client 分支,找出 client 分支和 server 分支的共同祖先之后的变化,然后把它们在 master 上重演一遍
$ git rebase --onto master server client
— git rebase [主分支] [特性分支] 命令会先取出特性分支 server,然后在主分支 master 上重演:
$ git rebase master server
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
$ git rebase --continue
在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。
$ git rebase --abort
列出所有修改过的文件及它们的状态
$>git add -i
取消文件的暂存
$ git reset HEAD file1.txt
移除跟踪但不删除文件
$ git rm --cached readme.txt
保存你的本地修改到储藏(stash)中, 然后将你的工作目录和索引里的内容全部重置, 回到你当前所在分支的上次提交时的状态
$ git stash save "stash test"
查看你保存的'储藏'(stashes):
$ git stash list
回复到以前的工作状态.
$ git stash pop stash@{0}
你可以在使用'git branch'命令时加上'--track'参数, 来手动创建一个'追踪分支'.
$ git branch --track experimental origin/experimental
它会自动从‘origin'抓取(fetch)内容,再把远程的'origin/experimental'分支合并进(merge)本地的'experimental'分支.
$ git pull experimental
$ git grep xmmap 仓库里每个使用'xmmap'函数的地方
$ git grep -n xmmap 显示行号
$ git grep --name-only xmmap 只显示文件名
$ git grep -c xmmap 查看每个文件里有多少行匹配内容(line matches):
$ git grep xmmap v1.5.0
这条命令会把你工作目录中所有未提交的内容清空(当然这不包括未置于版控制下的文件 untracked files). 从另一种角度来说, 这会让"git diff" 和"git diff --cached"命令的显示法都变为空.
$ git reset --hard HEAD
这条命令把hello.rb从HEAD中签出并且把它恢复成未修改时的样子.
$ git checkout -- hello.rb
撤消最近的一个提交:git revert 其实不会直接创建一个提交(commit), 把撤消后的文件内容放到索引(index)里,你需要再执行git commit命令,它们才会成为真正的提交(commit).
$ git revert HEAD
压缩操作比较耗时, 你运行git gc命令最好是在你没有其它工作的时候.
$ git gc
运行一些仓库的一致性检查
$ git fsck
查找问题的利器
$ git bisect start
$ git bisect good v2.6.18
$ git bisect bad master
回到之前(执行git bisect start之前)的状态.
$ git bisect reset
整个文件的每一行的详细修改信息:包括SHA串,日期和作者:
$ git blame file1.txt
git中把commit删了后,并不是真正的删除,而是变成了悬空对象(dangling commit)
$git fsck --lost-found
创建一个含附注类型的标签
$ git tag -a v1.0 -m '测试tag'
查看引用日志(引用日志信息只存在于本地——这是一个记录你在你自己的仓库里做过什么的日志。)
$ git reflog
所有可从experiment分支中获得而不能从master分支中获得的提交
$ git log master..experiment
显示任何在你当前分支上而不在远程origin 上的提交。如果你运行 git push 并且的你的当前分支正在跟踪 origin/master,被git log origin/master..HEAD 列出的提交就是将被传输到服务器上的提交。
$ git log origin/master..HEAD
指定被两个引用中的一个包含但又不被两者同时包含的分支。
$ git log master...experiment
Git 命令别名
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
$ git config --global alias.last 'log -1 HEAD' //最后一次的提交信息
$ git config --global alias.lo 'log --oneline'
$ git config --global alias.lg 'log --oneline --graph'
0 0
- git 常用命令
- Git常用命令
- git 常用命令
- git 常用命令
- git 常用命令
- git 常用命令
- GIT常用命令
- git 常用命令
- git 常用命令
- Git 常用命令
- git 常用命令
- Git常用命令
- Git常用命令
- git 常用命令
- Git 常用命令
- git常用命令
- git 常用命令
- Git 常用命令
- 【转】DESTDIR: GNU Make中的默认约定
- ffmpeg简单实战
- IOS addChildViewController方法使用及注意事项
- 欢迎使用CSDN-markdown编辑器
- JAVA导出excel(JFinal)
- Git 常用命令
- mysql查询5分钟内的数据
- nfs3方式挂载hdfs实现高可用存储
- HDU 6031 Innumerable Ancestors(LCA,树链剖分)
- linux下学习正则的一些小结
- 大都会系统MetLife小记
- java实现重建二叉树
- Python进阶之装饰器
- Ubuntu下安装MySQL及简单操作