简介
本Git学习是在Win7 Home Basic SP1的OS学习的。参考的文章为:廖雪峰的博客
若自己和他人做项目,可使用git进行代码管理。当前常用的有:GitHub、bitbucket、OSChina。可根据实际情况,自行选择。
他们的优缺点是:
名称 | 优点 | 缺点 |
---|---|---|
GitHub | 有很多开源项目,可以学习参考他人项目 | 私有仓是收费的 |
bitbucket | 可以创建私有仓 | 免费的私有仓最多只能有5人,若团队成员增加,则需要购买套餐,最便宜的$5/month,详细可参考其网站 |
OSChina | 私有仓不做任何限制(也算是限制吧,最多1000个项目) | 国内开源热情没有国外热烈,项目相对较少 |
对于Git的使用,是不分网站的。即,只要使用Git工具,操作是相同或类似的。
推荐另一Git教程:Pro Git(中文版)
下面具体说一下使用方法。
Git使用说明
1、安装及设定Git
下载地址:这儿
点击安装,运行Git Bash。
安装完成后需要配置基本信息:
git config --global user.name "zhenglin"
git config --global user.email nanshanrenzhe@126.com
上面的配置是用于标示开发者,一般而言不会有同事或朋友恶意重名,若有恶意重名,后面也会讲到如何处理。
查看当前的配置:
git config --list
通过以上命令,就可以查看本机的配置文件信息。
2、设定本地仓相关信息
2.1 设定本地仓的路径:
mkdir /f/Git/TianHe 说明:是指在本地F盘创建Git文件夹,并在Git中创建TianHe子文件夹,实际路径不存在,则会为你创建一个新的。
cd /f/Git/TianHe 说明:将创建的路径作为Git的cd
pwd 说明:查看一下有无创建成功。若成功会在显示路径信息[/f/Git/TianHe]
2.2 初始化
git init 该命令会为在指定的路径中创建一个空仓。
2.3 从网上下拉源码
以ASP.NET源码为例:
git clone https://git01.codeplex.com/aspnetwebstack.git
这样,就可以下拉源码了。如图所示:
2.4 git init与git clone的区别
git init 用于本地的git库的创建,先在本地建库,然后添加文件。这一步相当于源码的建立。
git clone 用于从网上下拉源码
3、追踪仓状态
在路径下创建新的文档(例如:readme.txt)---注意,建议所有txt使用UTF-8编码。
git add readme.txt 说明:将文档添加到index中(即缓存中),实际就是和本地仓打招呼,“新来一小弟,名字是readme.txt,还请多关照啊”
git commit -m "你需要添加的注释" 说明:将文档添加到head中。即使是这一步,仍然没有提交到远程服务器中的仓。
git status 说明:查看本地仓的状态
git diff readme.txt 说明:查看本地仓中readme.txt中的版本差别(本地版本与commit之后的版本的差别)
3.2 回退的相关操作
git log 说明:查看更新日记
git reset --hard HEAD^ 说明:回退至上一版本。 HEAD^^,回退至上上版本。 HEAD~100.回退至100个版本之前的版本。
cat readme.txt 说明:查看某一文件
git reset --hard [commit id] 说明:回退至任意之前的版本
git reflog 说明:获取所有的日志记录,不管是否关机。
3.3 关于撤销文件
撤销文件有两种情况。
1、仅在本地工作区有修改,然后希望恢复至HEAD版本。
git checkout -- readme.txt 说明:即将版本库中的文件覆盖本地文件。
2、在本地已经修改,且已经使用git add 命令了。
2.1 首先先撤销在缓存区中的内容,否则,使用git commit 可能会导致提交到版本库中
git reset HEAD readme.txt
2.2 再使用版本库中的文件覆盖工作区的文件
git checkout -- readme.txt
4 删除文件
rm test.txt 说明:删除本地工作区的文件
若误删本地文件,则可以通过之前的 git checkout -- test.txt 命令恢复文件。
若希望删除版本库中的文件:
git rm test.txt
git commit -m "delete a test.txt file"
4.1 有时希望删除已经提交至远程仓库的文件,则可以这么做:
(1)、将文件全部拷贝至本地
git pull
(2)、使用删除命令,删除文件,并提交至本地仓库
git rm test.txt
git commit -m "delete the test.txt file"
(3)、推送至某个分支下的远端仓库
git push origin dev
---此处的前提是:已经使用了 git checkout -b dev origin/dev,即将本地的dev分支与远程的dev分支相关联。
或者是: git branch --set-upstream dev origin/dev :类似远程分支的本地连接(或本地分支与远端分支进行关联)
5 git checkout -b dev origin/dev 说明:是指创建一个远程dev的本地dev分支。
可能会出现如下问题:fatal:cannot update paths and switch to branch ‘origin/dev'
解决方法:git pull 原因:本地没有改分支,因此需要将远程上的拉下来。
git branch -a 说明:是指查看本地所有的分支
6 多人协作的工作模式通常是这样:
-
首先,可以试图用git push origin branch-name推送自己的修改;
-
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
-
如果合并有冲突,则解决冲突,并在本地提交;
-
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
6.2 dev与master的merge问题整理。
一般而言,在服务器上会有两个分支:master与dev。master用于发布正式版本,而dev用于开元人员的提交。如下图1所示:
(图1)分支管理策略
团队中应该声明,master分支只允许特定的某人执行merge操作,其他人的可以创建本地的分支,填写完成后使用 no-ff 命令将内容与origin/dev分支进行合并。
合并的具体操作如下:
【本地分支与origin/dev分支的合并】
6.2.1、创建本地分支
git checkout -b am77
6.2.2、在本地工作目录添加文件,并将文件提交到本地仓
6.2.3、创建dev分支,并将本地的dev与远端的dev分支关联。
git checkout -b dev origin/dev
上一命令行是指:在本地创建一个新的分支dev,并关联远端的dev 【需注意】:前提条件是本地无dev分支。
若本地已经有dev分支,却尚未关联远端的dev,则可以使用如下命令行:
git branch --set-upstream dev origin/dev
6.2.4、切换分支,完成合并
git checkout dev
进行合并
git merge --no-ff -m "merge am77's files" am77
6.2.5、提交代码,删除分支
使用dev分支提交本地的代码,提交完成后,删除am77分支
git push origin dev
删除am77分支
7 设置代理
有时公司内网是有代理的,则需要为git设置代理,具体如下:
git config --global http.proxy http://proxy.yourname.com:8080
若需要密码:
git config –-global http.proxy http://user:password@proxy.yourname.com:8080
查看设定是否成功
git config –-get –-global http.proxy
删除代理
git config --system (或 --global 或 --local) --unset http.proxy
【需说明1】:设置了http代理,则使用
git clone
命令时,只能使用 https方式,不能使用ssh方式。如下:
git clone https://git.oschina.net/zhenglin/TianHe_Website.git
若有ssh的代理实现方式,请告知。
【需说明2】:此代理是通过Window下Git Bash实现的,Linux实现方式未知。