Github是什么
Github已成为全球最大的代(tong)码(xing)开(jiao)源(you)社(wang)区(zhan)
目的
记录git常用操作,这里不阐述什么是git,git的原理等。如有需要,请点击本文的参考文献
重要概念
- 工作目录:它持有实际文件;
- 缓存区(Index):它像个缓存区域,临时保存你的改动;
- HEAD:指向你最近一次提交后的结果。
基本设置
- git config
全局设置
# 提交时的作者和邮箱设置
git config --global user.name "Ashin"
git config --global user.email "475382220@qq.com"
基本操作
在客户端创建一个仓库(比较少用,一般都是git clone一个仓库,不需要自己去init一个仓库)
- git init
克隆远程仓库到本地,把url替换成你想要clone的地址或者文件路径
- git clone url
查看状态 简化信息的输出 可以使用 git status -s
- git status
可以使用通配符*
- git add
提交记录
- git commit -m “写下你的注释”
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交
- git commit --amend
查看日志记录
- git log --pretty=oneline
提交本地仓库到远程仓库,提交到哪个仓库,-u的作用是记住这次提交的仓库位置和分支,下次可以直接运行git push
- git push -u origin master
- git push
从远程拉取最新的版本
- git pull origin master ==> git fetch;git merge
远程仓库管理
- git remote add name url 添加一个远程仓库,name=url name 一般为origin
- git remote -v 查看仓库列表
- git remote set-url origin https://github.com/isc-projects/kea.git 修改远程地址
分支管理
如果要解决一个bug或者增加feature,可以通过创建分支
- git branch <branch_name>
创建分支,并切换到新分支
- git checkout -b <branch_name>
检出指定远程分支到本地分支,本地分支可以自定义名字
- git checkout -b <local_branch_name> origin/<remote_branch_name>
从指定标签检出一个分支,比如发布的某个tag发现bug就会用到
- git checkout -b <local_branch_name> <tag_name>
切换分支,如果没有这个分支,则匹配远程分支是否有同名分支branch_name,有则切换并跟踪,没有报错。
注意:还原也是用这个命令,需要注意下区别
- git chenkout <local_branch_name>
# 如果<local_branch_name>为远程分支名,则自动set up to track remote branch
Switched to a new branch 'dev_baffle'
Branch 'dev_baffle' set up to track remote branch 'dev_baffle' from 'origin'.
合并某个分支,需要切换到其他分支,然后合并你想要的分支
- git merge <branch_name>
删除本地分支,一般在增加完feature或修复bug文成后,并做merge操作,可以进行分支删除操作
- git branch -d <branch_name>
删除远程分支
- git branch -d -r <origin/remote_branch_name>
删除远程仓库分支
- git push origin :remote_branch_name
标签管理
查看标签列表
- git tag
新增加标签
- git tag <tag_name>
标签的版本信息
- git show <tag_name>
推送到远程 其他人克隆共享仓库或拉取数据同步后,也会看到这些标签
- git push origin <tag_name>
撤销操作
修改已经被 git add README.md 放入暂存队列,要从暂存队列删除
- git reset HEAD README.md
- git reset HEAD *
撤销修改,恢复到当前最新版本的
git checkout – file可以丢弃工作区的修改
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
- 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
- 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
- 总之,就是让这个文件回到最近一次git commit或git add时的状态。
回退到指定版本,commit id 这里的id可以根据 git log 查询,也可以使用相对引用HEAD^或HEAD~1等方式
- git reset --hard <commit_id>
将本地的状态回退到指定远程分支的一样
- git reset --hard <origin/master>
现在总结一下:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
其他
windows下创建.开头的文件名
文件命名为.yourname.
例如:
.gitignore.
参考文献
git - 简易指南
GIT和SVN之间的五个基本区别
Try Git
git恢复被修改的文件
git设置用户名密码
Git 基础 - 撤消操作
快速掌握 Git 用法
git clone 时显示Filename too long的解决办法
Git教程
撤销修改
Pro Git
如何在github添加公钥
Git配置多个SSH-Key
git、gitlab、github、gitee 到底都是什么鬼
GIT仓库如何恢复到前一次提交
git 拉取远程指定分支 pull本地不存在的分支
Git删除远程Tag、分支
Git 基础 - 打标签
解决冲突
Git使用小技巧之多个远程仓库
Git 分支 - 远程分支
Git 分支 - 分支的变基