git命令

获取与创建项目

git init    将一个目录初始化为 Git 仓库
git clone [url]    克隆一个 Git 仓库([url] 为你想要复制的项目

 

基本的快照

git add             添加文件到缓存
git add .           递归添加文件到缓存
git add *           不递归添加文件到缓存
 
git status           查看你的文件在工作目录与缓存的状态
git status -s       -s 参数表示以获得简短的结果输出

git diff                        显示已写入缓存与已修改但尚未写入缓存的改动的区别
git diff --cached        查看已缓存的改动
git diff HEAD               查看已缓存的与未缓存的所有改动
git diff --stat                        显示摘要而非整个 diff
git diff [version](或者你给该发布打的任何标签)    查看自发布或者某个旧历史点之后都有什么改变了
git diff [version] --stat         --stat 参数显示每个提交引入的改动的差值统计
git merge-base [branchA] [branchB]    计算两次提交的合并基础
git diff branchA...branchB    查看 branchB 与 branchA 的相对差值
 
git commit                          记录缓存内容的快照
git commit -m ‘注释’           -m 选项以在命令行中提供提交注释,如果漏掉了 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息
git commit -a                      自动将在提交前将已记录、修改的文件放入缓存区
git show commit_id    查看commit的修改
 
git config --global user.name 'Your Name'      设置用户名
git config --global user.email you@somedomain.com        设置邮箱
 
git reset HEAD -- 文件名   取消缓存已缓存的内容 --用来告诉 Git 这时你已经不再列选项,剩下的是文件路径了
 
给命令起别名

我们可以在 .git/config 文件里面进行别名设置,即加上下面这几行

    [alias]  
      st = status  
      ci = commit  
      br = branch  
      co = checkout  
      df = diff  

接着再敲git st

这次git st 就被识别成 git status了。

 
git rm [file]                                 将文件从缓存区和硬盘中(工作目录)删除
git rm --cached [file]     仅删除缓冲区的文件
 
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。即返回git add之前

git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。即git add 了然后git stash再返回git add 状态

git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。

git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
 

分支与合并

git branch                               列出可用的分支
git branch -r        查看远端分支
git branch (branchname)       创建新分支
git branch -d (branchname)             删除分支
 
git checkout 切换到新的分支
git checkout -b (branchname)     创建新分支,并立即切换到该分支上
git checkout file 忽略文件的修改
 
git merge [想要合并的分支]           将分支合并到你的当前分支,注意处理合并冲突,处理完冲突后记得要git add [冲突文件]再git commit

git log                                显示一个分支中提交的更改记录
git log --oneline                 --oneline 选项来查看历史记录的紧凑简洁的版本
git log --graph                   --graph 选项,查看历史中什么时候出现了分支、合并
git log --decorate         --decorate选项,查看标签
git log --author=作者名     只寻找某个特定作者的提交
git log -[number]      -[number] 选项,以限制结果为最近 [number] 次的提交
git log --before={3.weeks.ago} --after={2010-04-18}(三周前且在四月十八日之后--no-merges         根据日期过滤提交记录,--no-merges 选项表示以隐藏合并提交
git log --grep=提交注释中的某个特定短语        根据提交注释过滤提交记录
git log --grep=""  --author="" --all-match    --all-match 选项表示想看的是某人写作的并且有某个特殊的注释内容的提交记录
git log --grep="" --format="%h %an %s"    --format选项表示可以看到每个提交的作者是谁
git log -S需要寻找的信息                   依据所引入的差值过滤(注意在“-S”与你要找的东东之间没有“=”)
 
git show [SHA]       显示某个特定的提交引入的补丁
 
git log -p                              显示每个提交引入的补丁
git log --stat    显示每个提交引入的改动的差值统计
 
git tag  -a  [标签名or版本号]   给历史记录中的某个重要的一点打上标签,不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。
 

分享与更新项目

git fetch [alias]          从远端仓库下载新分支与数据
git pull [alias]            从远端仓库提取数据并尝试合并到当前分支:git fetch [alias] + git merge [alias]/[branch] = git pull [alias]
 
git push [alias] [branch]       推送[branch] 分支推送成为 [alias] 远端上的 [branch] 分支
git push origin test:test     提交本地test分支到远程的test分支
git push [alias] :[branch]  删除远程仓库分支

 

git remote                                   罗列远端仓库别名
git remote rename oldname newname  重命名仓库名
git remote add [alias] [url]          [url][alias] 的别名添加为本地的远端仓库
git remote rm [alias]   删除现存的某个别名

git remote set-url origin git://new.url.here    git 修改 remote的url

 

撤销

git checkout -- file #撤销工作区中一个叫file的文件的修改

git reset HEAD file #撤销暂存区中一个叫file的文件到工作区中

git reset --hard HEAD^ #回滚当前分支到上一个版本,注意末尾的^,有n个^说明回滚多上个版本,也就是回到多少次commit前

 
在一个分支(a)合并另一个分支(b)指定的文件或者文件夹:
先切换到a分支,然后执行git checkout b -- src/qy/model/unify/*
 
 

posted on 2017-01-03 01:07  果然朝辉  阅读(293)  评论(0编辑  收藏  举报

导航