20130907.Git学习记录
1、任何文件在Git内都只有三种状态:
①已提交(committed):已提交表示该文件已经被安全地保存在本地数据库中了;②已修改(modified):已修改表示修改了某个文件,但还没有提交保存;③和已暂存(staged):已暂存表示把已修改的文件放在下次提交时要保存的清单中。
由此我们看到Git管理项目时,文件流转的三个工作区域:Git 的本地数据目录,工作目录以及暂存区域。
2、先决条件:
1)在GitHub上面注册一个账号并激活
2)安装windows下的git客户端如msysgit
*****************************华丽的分割线*****************************
一、使用SSH建立本地Git跟GitHub的连接
SSH是什么,我也不清楚,只知道很多连接相关的都叫SSH比如说XShell连接Linux主机的时候就是SSH,应该是一种连接协议吧,需要找一个谷歌。
1、查看本地是否存在SSH:
![](http://images0.cnblogs.com/blog/195219/201309/14183818-2f543fa9b0944a75be1899f083448197.jpg)
No such file or directory 说明不存在ssh,则需要去创建一个新的ssh keys,使用命令建立SSH连接(看第3点)。
2、运行命令:
$ ssh-keygen -t rsa -C your_email@youremail.com
![](http://images0.cnblogs.com/blog/195219/201309/14183819-c3f1ccffe6ab4437b0f5f04ab54fe374.png)
执行完后在当前登录的用户下建立了文件夹:
![](http://images0.cnblogs.com/blog/195219/201309/14183819-965dcbf53c4a44d5ae5c26a04fc0b93f.jpg)
3、将新生产的SSH密钥导入到Github账户中
![](http://images0.cnblogs.com/blog/195219/201309/14183820-df0d4b63abef407d996086d716ddf842.png)
其中key是id_rsa.pub里面的文件内容:
![](http://images0.cnblogs.com/blog/195219/201309/14183821-c6a63d9109314c7583beec5ffa903d49.jpg)
4、接下来测试一下我们的git跟github是否能连接上
①输入命令:ssh -T git@github.com
![](http://images0.cnblogs.com/blog/195219/201309/14183821-c120d42173fa4529a153e157f74369a3.png)
②输入yes,提示
![](http://images0.cnblogs.com/blog/195219/201309/14183821-2406f800d6be45e084914965c29d6a23.png)
③输入之前设置的密码:直接提示连接被关闭
![](http://images0.cnblogs.com/blog/195219/201309/14183821-04e1fc45c1b54f838ed4eeb51ef0fdc6.png)
④接着执行上面的命令,再一次输入密码,发现
![](http://images0.cnblogs.com/blog/195219/201309/14183822-b88dd41775dc45f6b22a0c63fbc2e071.png)
以上设置为了让我们本地的Git跟Github连接上,接下来在本地配置git以便能够更好的进行签入和签出文件
*****************************华丽的分割线*****************************
二、配置Git并新建项目
![](http://images0.cnblogs.com/blog/195219/201309/14183822-b2ddcf648b404b2f95e4a52f71ba52ec.png)
操作之后windows下当前登陆用户会多一个.gitconfig文件,
![](http://images0.cnblogs.com/blog/195219/201309/14183823-bd1816af96a3491b82de1d33bfe11280.jpg)
文件内的内容为:
![](http://images0.cnblogs.com/blog/195219/201309/14183824-e24d405b26284ca1ac1c301f4fe929fa.png)
2、新建一个仓库![](//images0.cnblogs.com/blog/195219/201309/14183824-3c31fc668a3b40d193b5aa3ff3036eed.png)
![](http://images0.cnblogs.com/blog/195219/201309/14183824-3c31fc668a3b40d193b5aa3ff3036eed.png)
3、上传文件到GitHub中
①在的盘下新建一个目录名为jstest,跟前面建立的仓库名一样
![](http://images0.cnblogs.com/blog/195219/201309/14183825-861468e16c084a25898d6da2fdf62e2f.png)
②跳转到d:\jstest目录下
![](http://images0.cnblogs.com/blog/195219/201309/14183825-f636a51e4ef2432583b280314205cea3.png)
或者直接在cmd命令下进行,不过要将git的bin目录添加到环境变量下面
![](http://images0.cnblogs.com/blog/195219/201309/14183825-64a5bdd7587747e69a9c73d12b3b86da.png)
需要将git的bin路径添加到环境变量
③新建一个README文件
![](http://images0.cnblogs.com/blog/195219/201309/14183825-4d86d8bc3ea04a9391b49d8670f3f4a5.png)
![](http://images0.cnblogs.com/blog/195219/201309/14183825-d9873317d28b400b9924d866cfa7a583.png)
④签入到本地文件库中
![](http://images0.cnblogs.com/blog/195219/201309/14183826-7e9f2ac622b94e9abc42ae6a1a451273.png)
first commit 是签入备注
整个步骤如下图:
![](http://images0.cnblogs.com/blog/195219/201309/14183826-19d7a39322fb466b8f05b627434ab50a.png)
官方给出的命令如下:
![](http://images0.cnblogs.com/blog/195219/201309/14183827-5257c79b9d4d49c9a775a4cd0b002f5f.png)
以上就是Git的一个简单使用
*****************************华丽的分割线*****************************
三、Git不能支持中文的解决方法
1、ls不能显示中文目录
解决办法:在git/etc/git-completion.bash中增加一行:
alias ls='ls --show-control-chars --color=auto'
2、git commit不能提交中文注释
解决办法:修改git/etc/inputrc中对应的行:
set output-meta on
set convert-meta off
3、git log无法显示中文注释
解决办法:在git/etc/profile中增加一行:
export LESSCHARSET=iso8859
来源于网络
*****************************华丽的分割线*****************************
四、Git一些命令详解(不断更新)
1、从GitHub上克隆一个项目
克隆地址在每一个项目的首页都有,有很种形式的方式
2、使用git diff查看差异(这个缺点太多了,请直接右键单击项目然后选择Git gui)
![](http://images0.cnblogs.com/blog/195219/201309/14183827-73dbeec6fbc94e70babb62e73e772295.png)
3、将一个已经存在的项目更新到GitHub上的步骤:
1)切换到工作目录:cd /d d:\github\jstest
![](http://images0.cnblogs.com/blog/195219/201309/14183827-5425345c89864ff19d5810ed9e59887a.png)
1)新建一个文件夹,跟项目名称一模一样例如jstest
![](http://images0.cnblogs.com/blog/195219/201309/14183827-6c25c539a52444ed8c9add1685f73076.png)
2)将项目文件复制到jstest文件夹下
![](http://images0.cnblogs.com/blog/195219/201309/14183828-8e05a49caada45a7aaf8ab82acdbfb3b.png)
4)进入项目根目录夹并初始化git:git init
![](http://images0.cnblogs.com/blog/195219/201309/14183829-6e58dca9118240098586a5c9a101747a.png)
5)添加所有文件:git add .
![](http://images0.cnblogs.com/blog/195219/201309/14183829-6b5e350bddd641a6a28f9ec4c215e7a4.png)
6)提交到本地:git commit -m "start project"
![](http://images0.cnblogs.com/blog/195219/201309/14183833-6a31f6815d4549a5a0d4aecfa4345272.png)
7)添加到远程服务器:git remote add origin git@github.com:liujiangbei/pytest.git
![](http://images0.cnblogs.com/blog/195219/201309/14183833-744cc6e585504ddb9ec5d95d64b15a13.png)
8)更新到GitHub上:git push -u origin master
![](http://images0.cnblogs.com/blog/195219/201309/14183833-f1d639d70f1b445498d5050812833214.png)
参考文章:
4、创建一个仓库
Create a new repository on the command line
touch README.mdgit initgit add README.mdgit commit -m "first commit"git remote add origin git push -u origin master
Push an existing repository from the command linegit remote add origin https://github.com/liujiangbei/jstest
git push -u origin master
5、命令条目
1)添加文件:git add file
2)移除文件:git rm file
3)从远程获取最新版本并merge到本地:git pull origin master (当然要进入项目的活动目录里)
![](http://images0.cnblogs.com/blog/195219/201309/14183833-86aa6162309f4156871e7d83ea95513e.png)
4).更新项目(新加了文件):
$cd ~/jstest
$git add . //这样可以自动判断新加了哪些文件,或者手动加入文件名字
$git commit //提交到本地仓库
$git push origin master //不是新创建的,不用再add 到remote上了
5).更新项目(没新加文件,只有删除或者修改文件):
$cd ~/jstest
$git commit -a //记录删除或修改了哪些文件
$git push origin master //提交到github
6).忽略一些文件,比如*.o等:
$cd ~/jstest
$vim .gitignore //把文件类型加入到.gitignore中,保存
然后就可以git add . 能自动过滤这种文件
7).clone代码到本地:
$git clone git@github.com:liujb/jstest.git
假如本地已经存在了代码,而仓库里有更新,把更改的合并到本地的项目:
$git fetch origin //获取远程更新
$git merge origin/master //把更新的内容合并到本地分支
8).撤销
$git reset
*****************************华丽的分割线*****************************
有用的连接:
更新自己fork的项目
git中pull和fetch的区别
*****************************华丽的分割线*****************************
常见错误
1.$ git remote add origin git@github.com:WadeLeng/hello-world.git
错误提示:fatal: remote origin already exists.
解决办法:$ git remote rm origin
然后在执行:$ git remote add origin git@github.com:WadeLeng/hello-world.git 就不会报错误了
2. $ git push origin master
错误提示:error:failed to push som refs to
解决办法:$ git pull origin master //先把远程服务器github上面的文件拉先来,再push 上去。
附件列表