基础命令
初始化Git仓库:git init
添加修改至暂存区:git add <filename>
修改推送至仓库:git commit -m "here is comment"
掌握工作区状态:git status
查看修改内容:git diff
从版本库里删除文件:git rm <filename> + git commit -m "here is comment"
版本回退
退回某一历史版本:git reset --hard commit_id
查看提交历史(找到要回退的版本号):git log
查看提交历史并单行展示:git log --pretty=oneline
查看命令历史(找到要未来的版本号):git reflog
查看版本库里特定版本(例如HEAD)与工作区版本的区别:git diff HEAD -- <filename>
撤销修改/删除
把暂存区的修改重新放回工作区:git reset HEAD <filename>
让文件回到最近一次git commit或git add的状态(即用版本库里的版本替换工作区的版本):git checkout -- <filename>
GitHub
关联远程库:git remote add origin git@github.com:kexinlin/learngit.git
把本地库的所有内容推送至远程库并进行关联:git push -u origin master
把本地库的最新修改推送至远程库:git push origin master
从远程库克隆一个本地库:git clone git@github.com:kexinlin/gitskills.git
查看远程库:git remote
查看远程库详细信息:git remote -v
创建远程分支到本地:git checkout -b <name> origin/<name>
推送其它分支:git push origin <name>
设置本地分支和远程的连接:git branch --set-upstream-to=origin/<name> <name>
把最新提交从对应的远程分支上抓下来进行合并:git pull
分支与协作
创建分支:git branch <name>
切换分支:git checkout <name>
创建并切换至分支:git checkout -b <name>
查看当前分支:git branch
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
(如果fast-forward merge失败的话,需要手动解决冲突,然后add+commit,最后删除分支)
查看分支合并情况:git log --graph --pretty=oneline --abbrev-commit
禁用fast forward从而保留分支历史:git merge --no-ff -m "comment here" <name>
储存当前工作现场:git stash
恢复工作现场:git stash apply
删除stash:git stash drop
恢复工作现场并删除stash:git stash pop
查看stash list:git stash list
强制删除已经commit过但尚未进行合并的分支:git branch -D <name>
变基与标签
变基:git rebase <branchname>
对当前分支打一个标签:git tag <tagname>
查看所有标签:git tag
给某个commit打上标签:git tag <tagname> <commit id>
查看某标签信息:git show <tagname>
创建带有说明的标签:git tag -a <tagname> -m "comment here" <commit id>
推送一个本地标签至远程:git push origin <tagname>
推送所有本地标签至远程:git push origin --tags
删除本地标签:git tag -d <tagname>
从远程删除标签:git push origin :refs/tags/<tagname>