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 commit
或git 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>