GIT教程笔记
GIT的工作流程:
- 先在工作目录中添加、修改文件
一般是在工作目录建立你的工程文件夹,然后通过命令行进入文件夹后 git init 初始化
- 将需要进行版本管理的文件放入缓存区 git add 文件名
- 然后将缓存区的文件提交到Git仓库 git commit -m "提交说明"
GIT管理的文件有三种状态:
- -已修改(modified)
- -已缓存(staged)
- -已提交(committed)
GIT查看工作状态和历史提交:
- 查看状态 git status
- git reset HEDA<filename> 把暂存区域恢复成之前的状态,也就是在你add一个文件后你可以选择reset回去。此时暂存区域文件是待提交状态,如果你这时又去修改了文件,也要先 git add <filename> 后成最新的文件,再commit. git reset HEAD~1 表示回滚到上一个版本以此类推数字表示上面几个版本
- 当文件修改后,status会变成modified。此时可以选择 git add <filename> 来用新版本覆盖老版本,或者 git checkout -- <filename> 恢复到老的版本文件。reset命令是从reposity到stage
- git log 显示历史提交记录
- git reset --mixed HEAD~(这个选项默认) :-将HEAD指向上一个快照 -将HEAD移动后指向的快照回滚到暂存区域
- git reset --soft HEAD~ :-只是将HEAD指向上一个快照
- git reset --hard HEAD~ :-将HEAD指向上一个快照 -将HEAD移动后指向的快照回滚到暂存区域 -将暂存区域的文件还原到工作目录
- git reset 要回滚的id 回滚到指定快照
GIT版本对比:
- git diff 显示版本的一样的地方,---表示旧的,+++表示新的。当有:时表示当前窗口显示不完,输入命令显示更多(h获得帮助)
- git diff 快照ID1 快照ID2 比较两个历史版本, git commit -am "说明" 一次性添加提交
- git diff 快照ID 比较仓库快照和当前目录。 git diff HEAD~ 比较最新提交的快照和当前目录
- git diff --cached [快照ID] 比较暂存区域和仓库快照,后面的快照ID可选,默认最新
GIT修改、删除、重命名:
- git commit --amend 修改刚刚提交的说明
- git rm 文件名 删除当前目录和暂存区域的文件,也就是不再跟踪,下次提交时不纳入版本管理 git rm -cached 文件名 只删除暂存区域
- git mv 旧的文件名 新的文件名 修改文件名
GIT分支:
- git branch feature 创建feature分支。
- git checkout 分支名 切换分支
- git log --decorate(这个是修饰) --all(所有的) --oneline(一行) --graph(图形界面)
- git merge 分支名 合并分支
- git branch -d 分支名 删除分支
- git checkout HEAD~ 创建匿名分支,在你提交一系列东西的时候,可以使用HEAD~把指针指到想要的地方,这时间就会是一个匿名分支,你在这个匿名分支中做的任何操作都会不生效,但是你可以在这个匿名分支使用 git checkout -b 分支名 来真的创建一个分支,在你切换回master的时候还会提醒你一次用 git branch 分支名 ID号 来真的创建这个分支。这种匿名分支在你要做一些实验性的代码时还是很有作用的
checkout作用:
- 从仓库(或者暂存区域)拷贝一个文件到工作目录。 git checkout --文件名
- 切换分支
- 和reset的区别:都可以用来恢复指定快照的指定文件,切HEAD指针不会变,但是reset只将文件恢复到暂存区域(--mixed),checkout同时覆盖暂存区域和工作目录。checkout更安全,因为在执行前要先检查,reset会移动HEAD所在分支,checkout只移动HEAD本身
把代码在github上托管:
- 在github上注册账户->建立仓库
- 在本地安装GIT(下载地址:https://git-scm.com/download/)
- 在git bash中注册用户名和邮箱 git config –global user.name “用户名” git config –global user.email “邮箱”
- 然后配置你的ssh ssh-keygen –t rsa –C “邮箱地址” 然后一直回车得到一个你本地的文件
- 在本地存放ssh的文件夹下找到id_rsa.pub文件,用记事本打开全部复制里面的内容
- 进入的github网站,在setting里面找到ssh设置,添加你的SSH keys。名字随便取
- 然后在你本地先验证一下设置是不是成功 ssh –T git@github.com 会提示你,输入yes就是了
- 然后在你本地建立文件夹先进行代码管理初始化 git init
- 添加你对github上仓库的管理: git remote add origin git@github.com:用户名/仓库名.git
- 本地同步一下网上的仓库: git pull git@github.com:用户名/仓库名.git
- 然后对你本地项目进行add 和 commit等操作
- 最后再把本地的同步回网上: git push git@github.com:用户名/仓库名.git
git常见的操作错误:
提示出错信息:fatal: remote origin already exists.
- 先输入 git remote rm origin 是删除已经存在的origin
- 再输入 git remote add origin git@github.com:名称/仓库名 这个是添加一个对远程仓库的管理
- 如果输入 git remote rm origin 还是报错的话,error: Could not remove config section 'remote.origin'. 则要对config文件进行操作
- 找到你的github的安装路径
- 找到一个名为gitconfig的文件,打开它把里面的
[remote "origin"]那一行
删掉就好了!
提示错误::Permission denied (publickey).因为新生成的key不能加入ssh就会导致连接不上github
- 先输入$ ssh-agent,再输入$ ssh-add ~/.ssh/id_key,这样就可以了。
- 如果还是不行的话,输入ssh-add ~/.ssh/id_key 命令后出现报错Could not open a connection to your authentication agent.解决方法是key用Git Gui的ssh工具生成,这样生成的时候key就直接保存在ssh中了,不需要再ssh-add命令加入了,其它的user,token等配置都用命令行来做。
- 最好检查一下在你复制id_rsa.pub文件的内容时有没有产生多余的空格或空行,有些编辑器会帮你添加这些的。
提示错误:error:failed to push som refs to .......
- 先输入$ git pull origin master //先把远程服务器github上面的文件拉下来
- 再输入$ git push origin master
- 如果出现报错 fatal: Couldn't find remote ref master或者fatal: 'origin' does not appear to be a git repository以及fatal: Could not read from remote repository.
- 则需要重新输入$ git remote add origingit@github.com:用户名/仓库名