git笔记
git的安装 sudo apt-get install git-core
全局配置
git config --global user.name "Your Name
git config --global user.email "email@example.com"
版本库 repository
git init 初始化 出现 .git目录
git add xx
git commit -m "xiugai "
git status 多用此命令来来了解当前状态
git diff reade.txt 比较文件的变化
git log 查看日志,历史记录
git log --pretty=oneline 格式输出
回退一部 git reset --hard HEAD^
git reflog
git reset --hard ID //通过查看ID,倒退
git diff HEAD -- readme.txt 可以查看工作区和版本库里面最新版本的区别
git checkout -- readme.txt 可以丢弃工作区的修改
git reset HEAD readme.txt git checkout --readme.txt 可以把暂存区的修改撤销掉,放回工作区,然后在工作区删除
删除
工作区删除 rm readme.txt
版本库删除 git rm readme.txt
若工作区删除错误 可以使用 git checkout -- readme.txt 恢复工作区
远程版本库连接
ssh-keygen -t rsa -C "youremail@example.com" 生成 .ssh目录,把id_rsa.pub打开复制到github账户设置下的 SSH Key
git remote add origin git@github.com:yuchuan512/learngit.git
关联远程库,因为SSH Key公钥在账户列表中,可以推送上去
git push -u origin master 把本地库的所有内容给推送到远程库上
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
下次只需要 git push origin master
git clone git@github.com:michaelliao/gitskills.git
分支管理
git checkout -b dev 创建dev分支,并切换到dev。此语句相当于 git branch dev git checkout dev
git branch 查看当前全部分支,*号代表当前工作分支
git checkout master 切换到master分支
git merge dev 把dev分支工作合并到master分支上,直接把master指向dev的当前提交
git branch -d dev 删除dev分支
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存
用带参数的git log也可以看到分支的合并情况:
git log --graph --pretty=oneline --abbrev-commit
bug分支
git checkout dev ....操作..... git stash 将当前git状态入栈保存,此时查看git status干净的
git checkout master ....操作....
开辟bug分支 git checkout -b bug-fix git add xx git commit -m "xx is fixed" git branch -d bug-fix
git stash list 查看栈中工作空间
1) git stash apply ,但是stash内容不删除,需要用git stash drop 来删除
2) git stash pop 恢复工作空间的同时也会清理stash内容
也可以多次stash,恢复的时候先用git stash list查看,要恢复指定的stash
git stash apply stash@{0} git stash drop
feature-vulcan分支还没有被合并,如果删除,将丢失掉修改
如果要强行删除,需要使用命令git branch -D feature-vulcan
当从远程库克隆时,git自动把本地的master分支和远程的master分支对应起来,远程库的默认名称是origin
查看远程库信息 : git remote 或者git remote -v 显示更详细的信息
git push origin master 也可以推送其他分支,如 git push origin dev
与远程分支默认绑定,push与pull的时候不需要指定分支
git branch –set-upstream-to=origin/dev
如果不指定绑定的话,push与pull的时候需要
git push origin dev
git pull origin dev
在GitHub上,可以任意Fork开源仓库;
自己拥有Fork后的仓库的读写权限;
可以推送pull request给官方仓库来贡献代码
Git配置
git config --global color.ui true
.gitignore文件 参考组合 https://github.com/github/gitignore
忽略某些文件时,需要编写.gitignore
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
忽略文件的原则是:
忽略操作系统自动生成的文件,比如缩略图等;
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
别名 别名就在[alias]后面,要删除别名,直接把对应的行删掉即可
git config --global alias.st status ==》 用st代替status
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
Git Cheat Sheet git参考