目录
1、简介
当前常用的代码管理平台有:GitHub、bitbucket、OSChina。可根据实际情况,自行选择。本文使用Gitee。
对于Git的使用,是不分网站的。即,只要使用Git工具,操作是相同或类似的。
推荐另一Git教程:Pro Git(中文版)
参考的文章为:廖雪峰的博客
2、Git使用说明
2.1、准备工作
2.1.1、建立仓库
在Gitee官网上,创建一个仓库
创建完成后。点击“克隆/下载”按钮。
会弹出一些基本设置信息(如下图)。这部分过会儿会用到
2.1.2、安装Git及初始化
下载地址:这儿
点击安装,运行Git Bash。
安装完成后需要配置基本信息(就是上图中的身份信息):
git config --global user.name '郑林'
git config --global user.email 'zhenglin_beijing@163.com'
上面的配置是用于标示开发者,一般而言不会有同事或朋友恶意重名,若有恶意重名,也可以限定。
执行以下命令,看看目前git的配置信息
git config --list
如下图所示
就可以查看本机的配置文件信息。
2.1.3、验证是否开立SSH服务
本步骤,要验证本机是否已开启SSH服务。
还是在git Bash界面,运行如下命令
~/.ssh
或者
~/.ssh ls
若本机具备了SSH服务,则git控制台应该有如下信息
若本机未安装SSH,则百度window11 开启SSH。
【注意】,上面的截图中,有个SSH路径信息:/c/Users/Administrator/.ssh (每个人的路径不同,以实际为准)一会儿回用到。
2.1.4、完成 SSH 配置
在git bash中输入以下命令:
ssh-keygen -t rsa -C "你的邮箱"
以我的为例,就是:ssh-keygen -t rsa -C "zhenglin_beijing@163.com"
然后一路回车即可,不需要输入内容,最后出现如下界面
然后,在2.1.3中的SSH路径中,就会有两个文件。id_rsa和id_rsa.pub
打开id_rsa.pub,将内容全部复制。粘贴到Gitee的公开key中
2.2、开始工作
2.2.1、Git设置
创建一个文件夹,右键选择“Git Bash Here”
1、初始化
输入 git init
初始化完成后,默认会为本地创建一个main的分支。
在Gitee网站建仓库时,我们选择了“master/develop”模式,也就说有一个正式库、一个开发库。
正常的开发流程是:其他人只有develop的权限,仓库的所有者有master的管理权限。并且
2、将远程仓库进行本地化标识
输入 :git remote add + 名字 + SSH链接地址
以我的为例:
git remote add origin git@gitee.com:ZhengLink/zhenglintest.git
创建完成后,就是在本地为远程的仓库起了一个别名。
可以看到仓库后面有个main。意思就是说,现在在本地默认初始化了一个main的分支。一般而言,为了进行版本隔离,本地也应该有两个分支。main和dev(开发者分支,名字可以改变)。
因此我们需要创建一个开发者分支(dev),并使用这个分支,关联到远程仓库的develop的代码
3、获取develop数据
输入:
git pull origin develop
这句话的含义是,从仓库的develop中下载数据。执行效果如下:
默认情况是develop的分支数据保存到本地同名分支。因为本地现在还没有develop的分支,因此现在本地分支为未命名的分支。(就是界面上的[new branch])
若现在查看现在本地的分支信息,将会看到如下信息:
因此下一步,就是在本地创建一个分支,然后关联到远端的develop库。
4、创建分支并关联
输入:git checkout -b dev origin/develop
相当于1、在本地新建一个分支branch;2、这个分支(dev)关联到远端的develop分支了。效果如下:
此时再执行查看当前分支信息,就会出现
现在本地有两个分支:(dev和main),还有一个远端的分支。
现在就可以在文件夹中添加文件了。
5、提交文件
在文件夹中添加文件,然后将文件添加(add)到本地分支,然后提交(commit),然后推送到远端(push)。具体如下:
5.1、添加文件
此时运行git status
5.2、将文件添加到本地库
输入:git add -A 然后再看一下状态
5.3、提交文件
输入:git commit -m "你的修改备注",然后查看状态
5.4、上交文件
输入:git push -u origin dev:develop
意思是:本地的dev关联到develop,并将数据上交。-u只是绑定dev与origin/develop的关系。相当于配对。以后dev就与develop的绑定了
以后的提交,就不用了添加参数-u
只要是dev的分支,直接输入 git push origin即可。
5.5、最终效果
6、合并版本
在develop分支开发完成后,需要进行分支合并(就是将develop的代码,合并到master上)
主要命令如下:
1、确保使用develop分支
2、获取develop的最新代码
3、切换至master分支
4、使用merge合并代码
5、推送至master分支
使用如下命令,提交文件至服务器
//将文件夹内的文件添加到暂存区
git add -A
//提交到工作区
git commit -m "第一次提交"
//提交代码
git push origin
3、其他参考
下面的内容是原博客的内容。CSDN改版,导致板式全乱了
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实现方式未知。