git基础入门

  • git简介

git源于linux,前期linux内核维护都有linus手工合并,随着代码库的增加,手工管理渐渐不和实际。 而CVS和SVN都是商用的版本控制系统,与linux的开源精神不符,而且集中式的版本控制 不但速度慢,而且必须联网才能使用。 开始项目组启用了分布式版本控制系统BitKeeper,后被BitMover公司收回了Linux社区的免费使用权。迫使linux社区开发一套属于自己的分布式版本控制系统git。

到2008年 GitHub网站上线,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

  1. 集中式的版本控制系统与分布式版本控制系统

集中式版本控制系统,版本库是集中存放在中央服务器的,而大家工作的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始工作,工作完成,再把自己的修订推送给中央服务器。这类系统,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

  • 开始使用git

  1. gti配置

使用Git的第一件事就是设置你的nameemail,这些就是你在提交commit时的签名,每次提交记录里都会包含这些信息。使用git config命令进行配置:

1
2
git config --global user.name  "yangszz"
git config --global user.email  "yangszz@foxmail.com"

使用 cat ~/.gitconfig查看配置文件

1
2
3
4
cat ~/.gitconfig
[user]
         name = yangszz
         email = yangszz@foxmail.com

.gitconfig是git的配置文件,使用 git config --global <配置名称> <配置的值>后会生成在用户主目录下面

  1. clone或者新建

获得git仓库有两种方式,clone一个已存在的仓库和新建一个仓库

clone

1
git clone https: //github .com /yangszz/TEST .git

新建

1.创建一个目录

1
mkdir test

2.初始化该仓库

1
git init

init之后会在当前目录下面生成一个.git文件,使用ls -la查看

  1. 添加、提交和备注

现在来创建一个README文件

1
echo "git test" > README.me

添加到本地缓存区

1
git add README.me

提交到本地仓库代码库

1
git commit -m  "first commit"

到这里就已经完成了本地代码库的提交.下面需要同步到远程代码库

  1. push同步

同步之前要先添加远程仓库的地址指向

1
git remote add origin https: //github .com /yangszz/TEST .git

推送代码到远程仓库

1
git push -u origin master

这里第一次提交,之后再有修改直接使用git push命令就可以提交

提交会提示输入github的用户名和密码

1
2
3
4
5
Username  for 'https://github.com' : yangszz
Password  for 'https://yangszz@github.com' :
No refs  in common and none specified; doing nothing.
Perhaps you should specify a branch such as  'master' .
Everything up-to- date
  • 分支与合并

版本管理系统非常重要的一个功能就是分支与合并,它使得我们能够和谐的分工合作,大幅度提高项目开发速度.

首先,来添加一个分支

1
git branch branch1

查看分支列表,带星号的是当前选择的分支

1
2
3
$ git branch
branch1
* master

切换分支

1
git checkout branch1

切换之后再次查看分支列表,星号到了分支1前面

1
2
3
$ git branch
* branch1
master

在分支1下创建一个文件,并提交

1
2
3
4
5
6
7
8
9
10
11
12
13
14
echo "create file " > file1
$ git add file1
$ git status
# On branch branch1
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: file1
#
 
$ git commit -m  'branch1 commit'
[branch1 1f5ea41] branch1 commit
file changed, 1 insertion(+)
create mode 100644 file1

切换到主分支master,合并刚刚创建file1

1
git checkout master

使用ls -la 发现没有file1文件,现在我们使用git merge命令合并分支

1
2
3
4
5
6
$ git merge -m  'merge branch1' branch1
Updating 0430e70..1f5ea41
Fast-forward (no commit created; -m option ignored)
file1 | 1 +
file changed, 1 insertion(+)
create mode 100644 file1

使用ls -la查看file1 ,使用cat file1 查看里面内容, 就是我们在分支1创建的那个文件,合并完成.

冲突修改

合并的过程难免碰到有冲突的文件,执行合并后冲突文件需要手工修改冲突后再提交

1
2
3
4
5
6
test
<<<<<<<
master: update file2
=======
experimental: update file2
>>>>>>> branch1

使用vim编辑文件,去掉其中冲突的内容,再提交
git commit -m ‘merge update’

  • git日志

1.查看日志

git log命令可以显示所有的提交(commit):

1
$ git log

如果提交的历史纪录很长,回车会逐步显示,输入q可以退出。

git log有很多选项,可以使用git help log查看,例如下面的命令就是找出所有从”v2.5“开始在fs目录下的所有Makefile的修改:

1
$ git log v2.5.. Makefile fs/

Git会根据git log命令的参数,按时间顺序显示相关的提交(commit)。

2.日志统计

如果用–stat选项使用’git log’,它会显示在每个提交(commit)中哪些文件被修改了, 这些文件分别添加或删除了多少行内容,这个命令相当于打印详细的提交记录:

1
$ git log --stat

3.格式化日志

你可以按你的要求来格式化日志输出。--pretty 参数可以使用若干表现格式,如oneline:

1
$ git log --pretty=oneline

或者你也可以使用 short 格式:

1
$ git log --pretty=short

你也可用medium,full,fuller,email 或raw。 如果这些格式不完全符合你的相求, 你也可以用--pretty=format参数定义格式。

--graph 选项可以可视化你的提交图(commit graph),会用ASCII字符来画出一个很漂亮的提交历史(commit history)线:

1
$ git log --graph --pretty=oneline

4.日志排序

日志记录可以按不同的顺序来显示。如果你要指定一个特定的顺序,可以为git log命令添加顺序参数。

按默认情况,提交会按逆时间顺序显示,可以指定--topo-order参数,让提交按拓扑顺序来显示(就是子提交在它们的父提交前显示):

1
$ git log --pretty= format : '%h : %s' --topo-order --graph

你也可以用 --reverse参数来逆向显示所有提交日志。

  • git参考文档

原文 : http://www.vogella.com/tutorials/Git/article.html

译文 : http://www.cnblogs.com/zhangjing230/archive/2012/05/09/2489745.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值