【Git】学习指南(一)

一、基本概念

Git:分布式版本控制系统。Git Gui为图形界面工具,Git Bash为命令行工具。

版本库本质为一个高效的数据存储结构:

1、文件(blob):文本、二进制数据;

2、目录(Tree)

3、版本(commit):当创建新版本时,会自动根据数据内容计算出对应的十六进制散列值(版本号,eg.1632acb65b01c6b621d6e1105205773931bb1a41)


二、入门操作

1、准备Git环境

  • 下载:http://git-scm.com/download(官网)
  • 配置用户:config命令

git config --global user.name "17-XiXiLiu"  #用户名

git config --global user.email "[email protected]" #邮箱

【Git】学习指南(一)


2、创建项目

  • 创建项目目录(用于Git测试)

【Git】学习指南(一)

  • 创建版本库

 cd ./git/test # 切换至项目目录

 git init # 创建版本库,即工作区

【Git】学习指南(一)

  • 首次提交

git add foo.txt bar.txt   #确定哪些文件应包含在下一次提交中

git commit -m "sample project import"   #-m可写成--message,将修改提交到版本库中,并赋予一个版本号

【Git】学习指南(一)

  • 检查状态

修改foo.txt内容;先删除bar.txt,再添加bar.html新文件。

git status  #查看项目自上次提交后所发生的修改

git diff foo.txt  #显示foo.txt被修改的行

备注:bar.html被标记为Untracked files(未跟踪),是因为没有用add将其注册至版本库。

【Git】学习指南(一)

【Git】学习指南(一)

  • 提交修改

git add foo.txt bar.html   #对修改的文件和新增的文件执行add

git rm bar.txt   #对删除的文件执行rm

git status   #会看到所有以上修改已被算入下次提交中

git commit -m "some changes"   #提交修改

【Git】学习指南(一)

  • 显示历史

git log  #显示项目版本提交历史,按提交时间降序显示

【Git】学习指南(一)


3、协作功能

在实际开发项目中,往往是将项目clone到本地(版本库副本),然后在本地项目版本库中进行开发,再将开发的内容进行提交(add和commit),最后再push到远程,请求merge,合并到主支上。

  • 克隆版本库

 git clone ./test ./test-clone  #test-clone为test的克隆体(副本)

【Git】学习指南(一)

  • 从另一版本库中获取修改

修改test/foo.txt,提交修改。

cd ./test

git add foo.txt

git commit -m 'a change in the original'  #新提交的信息存入test版本库中,但test-clone版本库中是没有的

git log --oneline  #--oneline默认只显示提交ID和提交信息的第一行

【Git】学习指南(一)

修改test-clone/bar.html,提交修改。

cd ./test-clone

git add bar.html

git commit -m 'a change in the clone'  #新提交的信息存入test-clone版本库中,但test版本库中是没有的

git log --oneline  #--oneline默认只显示提交ID和提交信息的第一行

git pull  #将原版本库的新提交传给克隆体,并从原版库中取回新的修改,进行对比后,在工作区合并两边修改,创建新的提交(merge),pull只在克隆版本库中执行。

【Git】学习指南(一)

备注:某些情况会导致冲突。需手动清理一些文件。

git log --graph   #日志图形化

【Git】学习指南(一)

  • 创建共享版本库

git clone --bare  ./test ./test-bare  #创建裸版本库,不带工作区,用来充当push的汇聚点,便于他人从中拉回修改

【Git】学习指南(一)

  • push上传修改

cd ./test

git add foo.txt

git commit -m "more changes in the original"

git push /e/git/test-bare master  #需指定目标版本库的路径和分支

【Git】学习指南(一)

  • 获取修改

cd /e/git/test-clone

git pull /e/git/test-bare master 

【Git】学习指南(一)

(pull和push用于本地和远程之间的共享版本提交)

博主是个小白,正在学习中,将笔记拿出来和大家分享一下,若有理解错误的地方,请大牛多指教!