理解工作区、暂存区、分支
这篇已经画出了工作区、暂存区和分支的草图。注意git add是把工作区内容存到暂存区,git commit是把暂存区的内容提交到分支。
git diff head -- test.txt
显示工作区与分支的区别
撤销修改
- 如果在工作区修改了文件,还没有添加到暂存区,可以用
git checkout -- test.txt
撤销工作区的修改。 - 如果在工作区修改了文件,已经添加到暂存区,可以用
git reset head test.txt
撤销暂存区的修改,再用git checkout -- test.txt
撤销工作区的修改,完美!
删除文件
- 同Linux删除文件命令:
$ rm test.txt
,这将删除工作区的文件。 - 删除分支中的文件(删除是修改操作,要提交):
$ git rm test.txt
git commit -m "delete test.txt"
使用GitHub
首先根据GitHub官方教程或其他博客教程,注册GitHub账号,并创建一个仓库。然后把本地master分支和GitHub仓库分支关联起来:git remote add origin GitHub仓库ssh地址
(移除关联:git remote rm origin
),origin是自己为远程GitHub仓库取得别名,方便以后书写。然后git push origin master
从本地master上传到GitHub,会发现报错:
思考下,确实还没有和自己的远程GitHub建立连接,需要先用SSH协议建立连接,需要先获得RSA密钥。输入命令ssh-keygen
,一直回车。按照默认路径会在C:\Users\uername\下生成.ssh目录,这个目录下面生成了RSA公钥和私钥。
然后用记事本打开is_rsa.pub,复制该文件里的所有内容,粘贴到GitHub账号中的profile下的SSH keys中:
此时,再输入命令ssh -T -v git@github.com
就建立起和GitHub网站的连接啦。出现下面的提示信息:
Hi xxx! You’ve successfully authenticated, but GitHub does not provide shell access.
现在就可以git push -u origin master
上传文件到Github了,但是,但是还会遇到问题,需要把先git pull --rebase origin master
把GitHub仓库里的东西拖下来(就是因为GitHub创建仓库的时候多创建了一个README.md),然后再上传就可以了。
所以笔者建议从本地往GitHub里面传东西或从GitHub往本地克隆的时候,最好保证GitHub的仓库是空的。
从GitHub仓库中克隆一份下来的时候,也最好保证本地仓库是空的,直接执行git clone GitHub仓库ssh地址
即可。
常见问题:error: failed to push some refs to
解决方案:先执行这个操作:git pull --rebase origin master