我学习git用到的命令
这里有一个总结:Git Cheat Sheet
#安装初始化
sudo apt-get install git #git安装
git config --global user.name "Your Name" #
git config --global user.email "email@example.com" #
#基本操作
mkdir learngit #创建目录
git status #查看当前目录状态
git init #初始化目录
touch readme.txt
git add readme.txt #添加到缓冲区
git conmmit -m "add readme" #提交到git仓库
git diff readme.txt #查看修改内容
git diff HEAD -- readme.txt #查看工作区和版本库里面最新版本的区别
git diff HEAD~2 -- lib/log/file.php
git log #查看版本日志,可以加参数--pretty=oneline输入更少内容
git reset --hard HEAD^ #当前版本HEAD回退到上一个版本HEAD^,当前版本为HEAD,上一个版本为HEAD^,上一个版本为HEAD^^,上20版本为HEAD~20
git reset --hard 3628164 #回退到id为3628164的版本
git reflog #用来记录你的每一次命令,可以查看到每次操作的版本id
工作区:刚创建的文件
暂存区:使用add添加到暂存区
分支(master):使用commit提交到分支
git checkout -- readme.txt #可以丢弃工作区的修改
git reset HEAD readme.txt #撤销暂存区的修改
#删除操作
git rm test.txt #删除文件
git commit -m "remove test.txt" #删除后提交
git checkout -- test.txt #误删的文件恢复到最新版本,当粗鲁地使用系统rm命令可以使用这个命令
注:git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
#远程仓库
ssh-keygen -t rsa -C "youremail@example.com"
#创建本地密钥,一路回车便可,之后在~/.ssh/下生成两个文件id_rsa和id_rsa.pub两个文件,
#这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
#将id_rsa.pub中的内容添加到github中便可
git remote rm origin #删除远程关联
git remote add origin git@github.com:nobsu/demo1.git #关联本地仓库到远程仓库
git push -u origin master #推送到远程仓库,第一次加上-u参数
#分支
git branch #查看所有分支
git checkout -d dev #创建并切换到dev分支,相当于下面两条命令
git branch dev #创建dev分支
git checkout dev #切换当前分支到dev分支
git push origin dev #推送dev分支
git merge dev #将dev分支合并到当前分支(master)
删除远程分支
git branch -a
git branch -r -d origin/branch-name
git push origin :branch-name
git branch -d dev #删除dev分支
#解决冲突
$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
合并readme.txt文件时出现了冲突,Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件
#手动解决后提交
$ git log --graph --pretty=oneline --abbrev-commit #图形化查看分支合并情况
$ git branch -d feature1 #解决冲突后删除分支
git checkout -b dev origin/dev #创建远程origin的dev分支到本地
git pull #从远程拉取更新本地分支
git branch --set-upstream dev origin/dev#指定本地dev分支与远程origin/dev分支的链接,当pull提示“no tracking information”时使用
git remote -v #查看远程库信息
#标签
git tag #查看标签
git tag v1.0 #打标签,请在master分支上操作,或添加信息
git tag -a <tagname> -m "blablabla..."
git tag v0.9 6224937 #给指定id提交打标签
git show v0.9 #查看指定标签提交信息
git tag -d v0.1 #删除标签
git push origin v1.0 #推送标签到远程
git push origin --tags #一次性推送所有标签到远程
git push origin :refs/tags/v0.9 #删除一个远程标签,首先删除本地标签
#一个有用的别名配置git lg
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 stash #保存现场,可以把没有commit的暂存区保存起来
git checkout otherbr #修复其他问题
git checkout stashbr #切回之前的分支,来恢复现场
git stash list #查看工作现场
git stash apply #回复工作现场
git stash drop #删除工作现场
git stash pop #恢复并删除工作现场,相当于上面两条命令
git stash apply stash@{0} #多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash
Pull Request 记录:https://github.com/michaelliao/learngit/blob/master/nobsu.txt
[参考文献]
Git教程 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000