[Git] git用法小结
1. 初始化
git init #初始化git版本库
git config --global user.name [user name] #全局设置git用户名
git config --global user.email [user email] #全局设置git邮件地址
2. 提交
git diff #放入暂存区前,比较工作区与当前版本的差异
git add [file name] #把文件放到暂存区
git commit -m "[comment]" #把暂存区中的文件提交到版本库
3. 回滚
git log #从当前版本向前查看历史记录
git reflog #查看所有历史记录
git reset --hard [commit id] #把工作区恢复到某次提交后的版本
git checkout -- [file name] #回到最近一次git add或git commit后的状态
git reset HEAD [file name] #把暂存区的修改撤销掉,重新放回工作区
git rm [file name] #从工作区中删除文件,并把删除操作记录到暂存区
4. 远程
git clone [remote repository] #克隆远程库到本地
git remote -v #显示远程分支的信息,如果没有推送权限就看不到push地址
git remote add origin [remote repository] #设置远程库地址
git push -u origin master #把本地库的master分支推送到远程,-u用于第一次推送建立关联,以后git push origin master即可
git checkout -b [local branch name] origin/[remote branch name] #在本地创建和远程分支对应的分支
git pull #把最新的提交从远程分支上抓取下来
5. 分支
git branch #查看分支列表和当前分支
git checkout -b [branch name] #创建并切换到新分支
git checkout [branch name] #切换到分支
git merge [branch name] #合并指定分支到当前分支
git branch -d [branch name] #删除分支
git branch -D [branch name] #删除尚未被合并的分支
git log --graph --pretty=oneline --abbrev-commit #图形化显示分支结构
git merge --no-ff -m "[comment]" [branch name] #禁用Fast forward模式merge分支,即,先把当前分支提交,再合并
6. 暂存
git stash #把当前分支的工作现场保存起来,git status看不到修改
git stash list #查看保存过的工作现场列表
git stash pop #恢复工作现场,并从保存列表中删除
git stash apply #恢复现场,不从列表中删除
git stash drop #删除最近保存的stash
git stash apply [stash id] #恢复列表中指定的stash
git stash drop [stash id] #删除列表中指定的stash
7. 标签
git tag [tag name] #给当前分支的最后一次commit打上标签
git tag [tag name] [commit id] #给指定的commit打上标签
git tag -a [tag name] -m "[comment]" [commit id] #创建有说明的标签
git tag #显示所有标签
git show [tag name] #显示指定标签的提交信息
git tag -d [tag name] #删除标签
git push origin [tag name] #推送指定标签到远程
git push origin --tags #推送所有本地标签到远程
注:
(1)git rm [file name]后的恢复方法:
git reset HEAD [file name] && git checkout -- [file name]
(2)git pull提示"no tracking information"
说明本地分支和远程分支没有建立联系
git branch --set-upstream [local branch name] origin/[remote branch name]
(3)如果标签已经推送到远程,要删除远程标签就麻烦一些
git tag -d [tag name] && git push origin :refs/tags/[tag name]
(4)强制添加.gitignore忽略的文件
git add -f [file name]
还可以用git check-ignore -v [file name]来查看.gitignore的哪一行忽略了该文件
参考:
Git教程- 廖雪峰的官方网站