最近开始用Git来管理开发文件了,原因有二:一是方便管理,而是最近申请Github Student Developer Pack成功了,送了一大堆福利,包括两年的免费Private Repository(私人仓库),可以用来存放自己的代码以及项目。后续再写一篇申请教程。不过使用Git也不是一帆风顺,遇到了一些问题,在这里简单说说。
首先是下载git,这里推荐官网,然后找到windows版本,这里对应你的机器,有64位的,也有32位的,不过现在的电脑大部分都是64位的了。
对于Ubuntu,可以直接用命令行安装即可:
sudo apt-getinstall git
由于我大部分时间用的是windows,所以用软件安装的形式。一路默认确定即可,一般它都会按照最方便的设置给你设置好。
安装好后,新建一个文件夹,这个文件夹就相当于本地仓库。在文件夹内鼠标右键->Git bash,会出现一个命令窗口,我们先初始化一下,在Git bash 里面输入:
gitinit
回车后,发现文件夹里多了一个.git文件夹,说明初始化成功。
接下来就是配置我们本地信息,在Bash里面输入:
git config --globaluser.name"Your_name"
这里的Your_name 就是你要设定的用户名。回车后继续输入:
gitconfig--globaluser.email"Your_email@example.com"
这里的邮箱尽量输你注册Github时的邮箱。
然后就是关联我们的Github仓库,首先你得有Github账号,至于怎么注册,这里不再描述,请自行百度或Google。首先是生成SSH秘钥对,方便我们跟Github账号对接。在这里,我第一次是按照廖雪峰的Git教程来的,但是不成功:
ssh-keygen-trsa-C"your_email@example.com"
然后它会提示你保存秘钥对文件,刚开始不懂,就随便找个熟悉的文件夹保存了:
Enter afileinwhichtosave the key (/c/Users/you/.ssh/id_rsa):
然后绑定远程仓库的时候就一直报错,后来上Github看文档,找到了下面的一个提示:
也就是说使用默认的路径就好,问题解决。go on.
接下来就是到Github配置SSH秘钥,点击Setting->SSH and GPG keys,看到下图:
右上角的“New SSH key”,去到刚才默认生成SSH key 的目录,在我的机器里是:C:/User/11940/.ssh/ 的id_rsa.pub文件里,这里要注意,要用Sublime Text 或者Notepad++ 打开,不要用系统自带的记事本打开,因为windows的记事本会自动在文件第一个位置加一个十六进制代码(嫌弃脸),对于程序员来说,丝毫差错都可能运行不了啊。复制文件里的内容,粘贴到Github的key里面,title可以随意填写:
点击Add SSH key,她会让你验证github密码,填写即可。
回到之前新建的文件夹,右键打开Git Bash 输入如下命令添加远程仓库:
gitremote add origin git@github.com:Your_github_name/your_repository.git
回车,然后会出来一堆信息,如果没有报错就说明成功了,如果报错,说明还没有配置好,或者像我一样,把秘钥文件存到别的地方去了T^T。
接下来测试一下,看看能不能远程同步,输入命令:
gitaddREADME.txt
回车,没有消息,good ,没有消息就是好消息,说明README.txt已经添加到我们的本地仓库,这里的add 命令可以添加多个文件,用英文逗号分隔即可。然后就是提交:
gitcommit -m"add new line"
这里的-m后面的文字就是你修改的话,一般写你改动了什么。回车后会提示你多少个文件提交,以及删除,修改,新增了多少行。我们来尝试一下提交到远程Github仓库,这里的master就是仓库的主要分支,当然,你也可以换到其他分支:
gitpush -u origin master
咦?出错了,提示我被rejected了,并且failed to push some refs to.....,重试了好几次都这样,上网一查,原来是本地仓库和远程仓库不一致造成的,因为在Github建repository的时候选了Initiate with a README.md,也就是远程仓库多了README.md,输入以下命令将远程仓库中的更新合并到本地仓库中,并把刚才提交的文件恢复到原来的状态:
gitpull --rebase roigin master
回车后:
还是报错,看他的提示:You have unstaged changes ,原来是还有东西在缓存区,原因是我把README.txt改成了test.txt然后就commit了,文件对不上自然会报错,输入以下命令:
gitcheckout
emmm....确实是,checkout 命令是用来检查还没提交的,再处理一下:
gitstash
stash 命令用来将所有未提交的修改暂存到stash里。现在文件夹里的README.txt和test.txt都在了,push之后远程仓库里出现了本地仓库的内容,同步完成!
首发公众号:Py填坑之路