Git知识点总结
2016-06-16 14:58
239 查看
Git知识点总结
初级
工作流working directory是操作目录
staging area是暂存区,用来保存变化
repository是仓库,保存作为一个版本的变化
基础命令
git init
git status
git diff
git log
git reflog
git add [. | filenames]
git commit -m “message <=50 characters”
HEAD
HEAD:当前所在版本
HEAD^:上一个版本
HEAD~n:上n个版本
SHA:40 characters 唯一标识取至少7位
中级
分支git branch 当前分支
git branch new_branch 新建分支
git checkout branch_name 切换分支
git merge branch_name(提供者分支名称) 合并到当前分支
git branch -d branch_name 删除分支
注:若有冲突conflict,需要手动修改,再add、 commit
teamwork
git clone remote_location(from) clone_name(to)克隆远端的仓库到本地
git remote -v 查看远端仓库的版本信息
git fetch 查看远端修改(这个操作只是合并到了本地的origin/master,不是本地的local/master)
git push your_branch_name 上传到远端
注:
origin/master 标志远端HEAD的位置
git fetch区别于git pull:fetch不会自动merge,pull会自动merge。fetch更安全
使用Github需要先fork到自己的账号下,再从自己的账号下clone,才可以提交修改
工作流程
一般的使用git来做版本控制的工作流程如下:
①fetch and merge (=pull)
②创建新分支来开发新的功能
③开发、commit
④fetch and merge
⑤push your branch to remote
高级
reset和checkout这是与回退相关的两个常用命令,到底什么时候该用哪个命令,具体用法和区别如下:
reset命令一般用于版本回退:注意不只是可以做仓库的版本回退。使用如下:
命令格式:git reset [- -参数] [commit-id] [filename]
hard:HEAD INDEX WORKING都改变
mixed:HEAD INDEX改变(默认)
soft: HEAD改变
加文件名代表只有该文件做回退,不加代表所有文件均回退
checkout有两个作用:切换分支和撤销修改(指修改工作区,仓库的版本都还存在)
撤销修改:
①git checkout - -[.|filename]
若add过,回到add之后的状态。若没有add过,回到上一次commit
②工作区内容回到上一次或者上n次的版本
git checkout commit-id filename 或者 先reset在checkout - -
两种方式的对比:前者容易误操作,但是保留了该文件工作区目标版本之后的几个版本。后者不容易误操作,但是几个版本会丢失。
关于前者的误操作和解决方式:filename是必须加的,若不加,该命令将使HEAD指针不再指向最新的版本,而是处于游离状态。解决方法是:checkout到master分支,但若目前已有修改无法切换到master分支。则新建temp分支,commit再合并到master分支,然后删除temp分支。可以将HEAD指针回到最新版本的位置。
git stash
当前分支工作未完成,不行commit,但是要切换到其他分支去工作。问题是:不commit修改无法切换到其他分支。因此要用到stash。
git stash 备份
git stash pop 读取并恢复(pop命令之后不再有,apply之后还有)
git stash list
git stash clear 清空
git stash apply [stash @{1}]
git stash drop [< stash >]删除某进度,默认最新
注:不能保存untracked files,需要加-u参数
github的使用(摘了网上的)
配置Git
①首先在本地创建ssh key;
ssh-keygen -t rsa -C “your_email@youremail.com”
后面的your_email@youremail.com改为你在github上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。
回到github上,进入 Account Settings(账户配置),左边选择SSH Keys,Add SSH Key,title随便填,粘贴在你电脑上生成的key。
github-account
为了验证是否成功,在git bash下输入:
ssh -T git@github.com
如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。
②把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。
git config –global user.name “your name”
git config –global user.email “your_email@youremail.com”
进入要上传的仓库,右键git bash,添加远程地址:
git remote add origin git@github.com:yourName/yourRepo.git
后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。
③创建新文件夹,打开,然后执行 git init 以创建新的 git 仓库。
检出仓库
执行如下命令以创建一个本地仓库的克隆版本:
git clone /path/to/repository
如果是远端服务器上的仓库,你的命令会是这个样子:
git clone username@host:/path/to/repository
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- git终极指南:在实际开发中的应用
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)
- git eclipse 插件的安装
- git fork同步是什么意思?
- Git使用小坑 Out of memory错误的解决方法
- Python的高级Git库 Gittle
- 使用GIT进行源码管理――GUI客户端小结
- 使用git代替FTP部署代码到服务器的例子
- linux系统安装git及git常用命令
- 分享下自己总结的Git常用命令