Git笔记

一、安装git:sudo apt-get install git

二、把一个工程初始化为仓库:git init

三、把文件添加到暂存区:git add [filename]

四、把暂存区的内容提交到当前分支:git commit -m "[change message]"

五、查看状态:git status; 查看不同:git diff [filename](如果status告诉你文件被修改过,可以用diff查看修改内容)

六、查看日志:git log --pretty=oneline;查看历史版本:git reflog;

七、版本回退:git reset --hard HEAD^ 或git reset --hard (版本号);

八、撤消工作区的修改:git checkout -- [filename]

  这里有两种情况:

  一种是filename自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

  一种是filename已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

  总之,就是让这个文件回到最近一次git commitgit add时的状态(即如果暂存区有内容,则从暂存区恢复,如果没有则从版本库恢复)。

九、撤消暂存区的修改:git reset HEAD [filename](重新放回工作区,相当于没提交而已,应该是美柚放回工作区的)

十、删除文件:git rm [filename]且 commit

十一、创建SSH KEY:ssh-keygen -t rsa -C "youremail@example.com"(生成的文件在~/.ssh目录下)

十二、查看远程库的信息:git remote (-v 查看更详细的信息)

  添加远程库:现在github上添加一个仓库,然后在本地库运行:git remote add origin git@github.com:michaelliao/learngit.git

十三、推送分支:git push origin master,如果要推送其他分支,则git push origin [dev]

  然后推送:git push -u origin master(由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。)

十四、抓取分支:git clone只能抓取master,如果要抓取其他分支:git checkout -b [dev] origin/[dev]

  建立本地分支和远程分支的关联:使用git branch --set-upstream branch-name origin/branch-name

  当推送失败时:git pull(把远程的分支抓取过来,如果提示“no tracking information,则:git branch --set-upstream [dev] origin/[dev],如果合并冲突,则手动修改,再commit,push

  从远程库克隆:git clone git@github.com:michaelliao/gitskills.git(GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。)

十五、创建分支:git branch [dev];切换分支:git checkout [dev];创建并切换分支:git checkout -b [dev];用git branch查看当前使用分支。

十六、合并分支:git merge (--no-ff参数,表示禁用Fast forward) [dev](若发生冲突,要手动修改)

十七、删除分支:git branch -d [dev](-D 如果分支还没合并,强行删除)

十八、查看分支的合并情况:git log --graph --pretty=oneline --abbrev-commit

十九、当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

二十、打标签:首先切换到要打标签的分支上,再git tag [v1.0] id(如果没有表示当前版本)

  查看所有标签:git tag

  创建带有说明的标签,用-a指定标签名,-m指定说明文字:git tag -a v0.1 -m "version 0.1 released" 3628164

  git show tagname可以看到说明文字

  删除标签:git tag -d tagname

  推送标签:git push origin tagname (--tags表示推送全部标签)

  删除一个远程标签:git push origin :refs/tags/<tagname>