Git版本管理工具
Git版本管理工具中有三种管理方式,第一种Centralized Workflow
第二种是Integration-Manager Workflow
第三种是Dictator and lieutenants Workflow。
在这里讲述一下自己在学习第一种方式中的学习心得。
Centralized Workflow :(适用于5~8人左右的团队使用) 在使用Git版本管理工具的时侯,我们首先有一个发起者,即将源文件存放到一个远端库。当远端库中已经有数据的时候我们就可以进行操作了。
第一步 :在本机建立一个模拟远端数据库
backAFENG:prj.git qingyun$ git init --bare
Initialized empty Git repository in /Users/qingyun/Desktop/123/prj.git/
backAFENG:prj.git qingyun$
在这里第一步是对远端库进行初始化,初始化的时候 --bare不可省略,因为只有在初始化的时候加上 --bare其它的开发者进行向远端仓库进行推送和下载数据;(远端库在不加 --bare进行初始化之后,会限制其他的开发者进行push和pull)。注:这只是个模拟的远端库,实际应用中作为开发者我们用不到这些,在此写出只是为了方便自己练习时的方便。
第二步:我将自己作为第一个开发者向远端库推送源码:
a.创建一个文件夹并进行初始化;
b.在文件夹内创建一个文件;
c.作为一个项目的发起者连接远端库;
d.将文件加入暂缓区
e.将暂缓区的文件提交
相关代码如下:
backAFENG:123 qingyun$ mkdir afeng
backAFENG:123 qingyun$ cd afeng/
backAFENG:afeng qingyun$ git init
Initialized empty Git repository in /Users/qingyun/Desktop/123/afeng/.git/
backAFENG:afeng qingyun$ vi main.c
backAFENG:afeng qingyun$ git remote add origin ../prj.git/
backAFENG:afeng qingyun$ git add main.c
backAFENG:afeng qingyun$ git commit -m "README"
backAFENG:afeng qingyun$ git push -u origin master //此句是向远端库推送源代码。
Counting objects: 3, done.
Writing objects: 100% (3/3), 219 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ../prj.git/
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
这时发起者就已经将源代码发送到远端库,由上述代码我们可以看出来,我们是上传到了master分支上。
接下来我们就介绍一下作为开发者应该如何进行对已有的远端库中的代码进行下载和推送中:
1.首先在本机建立一个文件夹并进入该文件夹,然后对文件夹进行初始化
- 初始化: git init
代码如下:
backAFENG:123 qingyun$ mkdir developer
backAFENG:123 qingyun$ cd developer
backAFENG:developer qingyun$ git init
Initialized empty Git repository in /Users/qingyun/Desktop/123/developer/.git/
//最后一行是显示初始化完成的信息。
2.初始化之后要进行邮箱和姓名的配置- 邮箱的配置: git config --global user.email "****@**.com"
- 姓名的配置: git config --global user.name "name"
- 配置完成之后查询:git config --list
代码如下:
backAFENG:developer qingyun$ git config --global user.email "backafeng@**.com"
backAFENG:developer qingyun$ git config --global user.name "backafeng"
backAFENG:developer qingyun$ git config --list
user.name=backafeng
user.email=backafeng@**.com
3.在完成这两步之后就可以创建文件并将文件添加到暂存区了
补充一下,在Git内的文件都只有三种状态,已提交(commited),已修改(modified),已暂存(staged)。
-创建一个文件:(文件类型随意)例:echo "readme" > README
- 添加文件到暂存区:git add < filename>
- 添加所有文件到暂存区:git add *
代码如下:
backAFENG:developer qingyun$ vi student.c
backAFENG:developer qingyun$ git add student.c
backAFENG:developer qingyun$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: student.c
git status是查看当前状态,这时我们就可以查看出来 student.c文件已经添加到暂存区中。
4.在添加文件到暂存区之后就可以将暂存区内的文件提交
-提交暂存区: git commit -m "message" //其中的message只是一个标识信息,可根据自己需要填写。
代码如下:
backAFENG:developer qingyun$ git commit -m "student"
[master (root-commit) e622869] student
1 file changed, 1 insertion(+)
create mode 100644 student.c
backAFENG:developer qingyun$ git status
On branch master
nothing to commit, working directory clean
这时我们可以明确的查看到文件已经提交,并且存在于master分支上。
5.之后就可以从远端仓库进行克隆一份到本地仓库了
-克隆仓库 : git clone [URL]
代码如下:
backAFENG:developer qingyun$ git clone ../prj.git/
Cloning into 'prj'...
done.
backAFENG:developer qingyun$ ls
prj student.c
backAFENG:developer qingyun$ cd prj
backAFENG:prj qingyun$ ls
main.c
成功连接远端库prj.git,并成功克隆下来上传者的main.c文件。
接下来的步骤就可以按照下面的介绍进行操作了,接下来的就不再上传代码,自己可以试着练习一下。
其中URL是一种传输协议,在Git中支持多种传输协议。我们常用的有三种传输协议:即 git ://协议;ssh:// 协议;http(s): //协议。
6.将远端仓库克隆下来之后,就可以进行文件的上传,修改,添加等操作了
-将文件上传到远端仓库:git push -u origin master
其中origin是我们在clone远端仓库的时候本地默认起的一个远端仓库的名字,同理master是主干。这里的-u表示的是如果本次加了-u 那么下次直接git push 就相当于执行的是git push -u origin master这条语句,当然如果想上传到其他的分支(下文会讲到分支的概念)上的话可以直接直接进行 git push origin branchname。
7.从远端仓库下载最新的分支和数据
-git fetch <name>
8.获取并合并远端仓库的分支到当前分支
-git pull -u <reponame> <branchname>
9.要注意一点,每一次我们进行git push之前都要进行一次git pull或者git fetch 来查看一下最新的版本,以免出现文件名定义重复,操作已删除的文件或分支等等多种问题
10.分支:分支就是在原来的基础上另外开辟一个分支进行其它方向的研发。
11.分支操作:
-查看分支:git branch 查看分支; git branch -a 查看所有分支;
-创建分支:git branch <branchname>
如果在本地建立了一个分支并且想要将分支push到远端仓库的时候:git push origin <branchname>
-删除分支:git branch -d <branchname>
-切换分支:git checkout <branchname>
-合并分支:git merge <branchname> 本句话的含义是将branchname 这个分支合并到当前分支下,但是要注意一点不可以将master合并到任何一个分支上面。
以上是加入到一个远端仓库必要的几个步骤,下面在说一些Git时比较常用的命令:
12.还有一条比较重要的命令就是 查看工作目录状态的命令
- git status
13.从暂存区移除文件: git rm <filename> //需注意,此处只是将文件从暂存区移除,而并不是删除该文件。
14.重命名一个文件: git mv <oldfilename> <newfilename>
15.查看提交历史记录:git log
16.查看文件内容的改变: git diff
17.撤销加入暂存区的操作: git reset HEAD <file> 将文件从暂存区撤销。
18.撤销修改的操作:git checout --<file> 即撤销上一次对文件的操作。
Tag 操作
19.查看tag: git tag
20.创建tag : git tag -a v1.0 -m "my version 1.0"
21.显示tag信息: git show v1.0
22.对之前的提交打tag : git tag -a v1.0 -m "version 0.1 "
纯属本人的认知,如有错误,欢迎指出,可以多多交流。