Git命令

Reading time ~1 minute

Git命令

创建版本库

  • 初始化一个Git仓库:git init
  • 添加文件到Git仓库,分两步:
  • 第一步,告诉git添加文件,添加到暂存区: git add ,注意,可反复多次使用,添加多个文件;
  • 第二步,告诉文件添加文件到仓库提交到当前分支:git commit -m <”commit”>,完成。
  • 查看工作区状态: git status
  • 查看修改内容:git diff
  • 查看工作区和版本库里面最新版本的区别:git diff HEAD –
  • 查看文件内容: cat

日志

  • 显示从最近到最远的提交日志 git log
  • 简化日志查看git log –pretty=oneline
  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
  • 分支合并图: git log –graph –pretty=oneline –abbrev-commit

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164…882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

回退到上一个版本:git reset –hard HEAD^/使用命令git reset –hard commit_i

撤销修改

把文件在工作区的修改全部撤销,就是让这个文件回到最近一次git commit或git add时的状态

  • 文件自修改后还没有被放到暂存区
  • git checkout – file 命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令
  • 文件已经添加到暂存区后
  • git reset HEAD file可以把暂存区的修改撤销掉

删除文件

  • 直接在文件管理器中把没用的文件删:rm
  • 确实要从版本库中删除该文件:那就用命令git rm 删掉,并且git commit:

远程仓库

  • 创建SSH Key : ssh-keygen -t rsa -C “youremail@example.com”
  • 关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
  • 第一次推送master分支的所有内容:git push -u origin master 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改
  • 远程库已经准备好了,下一步是用命令git clone克隆一个本地库:git clone git@github.com:michaelliao/gitskills.git

分支

  • 查看分支:git branch
  • 创建分支:git branch
  • 切换分支:git checkout
  • 创建+切换分支:git checkout -b
  • 合并某分支到当前分支:git merge
  • 删除分支:git branch -d
  • 普通模式合并,合并后的历史有分支,能看出来曾经做过合并:git merge –no-ff -m “merge with no-ff” dev

Bug分支

  • 把当前工作现场“储藏”起来,等以后恢复现场后继续工作:git stash
  • 首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支

    $ git checkout master git checkout -b issue-101

  • 修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:

    git checkout master git merge –no-ff -m “merged bug fix 101” issue-101 git branch -d issue-101

  • 接着回到dev分支干活

    git checkout dev 用git stash list命令看看存储的工作现场 工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法: 一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除; 另一种方式是用git stash pop,恢复的同时把stash内容也删了: 可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令

  • git stash apply stash@{0}
  • 如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除

远程分支

程分支就是本地分支push到服务器上的时候产生的:git push origin dev 会产生一个dev远程分支

  • 查看远程和本地分支 :git branch -a
  • 查看远程库信息,使用:git remote -v;

本地新建的分支如果不推送到远程,对其他人就是不可见的; 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交; 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; 建立本地分支和远程分支的关联,使用git branch –set-upstream branch-name origin/branch-name; 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

标签管理

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

  • tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  • git tag -a -m "blablabla..."可以指定标签信息;
  • git tag -s -m "blablabla..."可以用PGP签名标签;
  • git tag可以查看所有标签
  • git push origin 可以推送一个本地标签;
  • git push origin –tags可以推送全部未推送过的本地标签;
  • git tag -d 可以删除一个本地标签;
  • git push origin :refs/tags/可以删除一个远程标签。

参考资料

廖雪峰的官方网站史上最浅显易懂的Git教程!

AMD&CMD 兼容实现

Published on April 29, 2016

我的地盘

Published on April 18, 2016