学习笔记:Git 教程

Git 简介

Git 是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具。

集中式 vs 分布式

集中式版本控制系统:版本库集中存放在中央服务器,可以接受代码,所有人将自己的工作与之同步。开发者从中心仓库克隆代码下来,进行工作,再将结果推送给中央服务器。

分布式版本控制系统:没有“中央服务器”,每个人电脑里都有完整的版本库。开发者既可以将自己的代码贡献到其他的仓库中,同时也能维护自己的公开仓库,让其他人可以在其基础上工作并贡献代码。实际使用时,通常会有一台充当“中央服务器”的电脑,用来方便“交换”大家的修改。

工作区、暂存区和版本库

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

Git 开发流程

(1)克隆远程项目到本地。

$ git clone https://github.com/xxx/xxx.git

(2)在本地建立自己的分支。

$ git checkout -b feature-name

(3)在自己的分支上进行开发,编写代码。

(4)查看文件状态及修改情况,提交分支。

$ git status
$ git add .
$ git commit -m "Commit Message"

(5)将自己的分支推送到远程仓库。

$ git push origin feature-name

(6)在 GitHub 网站上提交 pull request。

(7)若成功合并,删除本地的分支;否则修改程序,重新提交。

$ git branch -d feature-name

(8)开始新的任务前,拉取远程 dev 分支的最新代码到本地。

$ git pull origin dev

Git 使用方法

创建版本库

选择一个合适的地方,创建一个空目录,通过 git init 命令把这个目录变成 Git 可以管理的仓库。

$ git init

添加和提交文件

通过 git add 命令把文件添加到暂存区。

$ git add readme.txt

通过 git commit 命令把文件提交到仓库。可以多次添加文件,然后一次提交很多文件。

$ git commit -m "提交说明"

修改文件

通过 git status 命令查看仓库当前的状态,显示有变更的文件。

$ git status

通过 git diff 命令查看具体修改的内容,即暂存区和工作区的差异。

$ git diff readme.txt

如果需要撤销修改,可以用 git checkout -- <file> 命令让这个文件回到最近一次添加或提交时的状态。

$ git checkout -- readme.txt

如果用 git add 命令把修改文件添加到暂存区后,又需要撤销修改,可以用 git reset HEAD <file> 命令把暂存区的修改撤销掉(unstage),重新放回工作区。

$ git reset HEAD readme.txt

删除文件

通过 git rm 命令删除工作区文件,并且用 git commit 命令提交,可以从版本库中删除该文件。

$ git rm test.txt

版本回退

通过 git log 命令显示从最近到最远的提交日志。加上 --pretty 选项可以指定输出的信息和格式(参考)。

$ git log
$ git log --pretty=format:"%h | %ad | %s"

通过 git reset 命令把当前版本回退到上一个版本。在 Git 中,用 HEAD 表示当前版本,上一个版本就是 HEAD^,上上一个版本就是 HEAD^^,往上100个版本可以写成 HEAD~100

$ git reset --hard HEAD^
$ git reset --hard fd01cc8

通过 git reflog 命令查看命令历史,可以指定恢复到未来的某个版本。

$ git reflog

远程仓库

登录 GitHub,创建一个新的仓库,这个仓库目前是空的。

可以从这个 GitHub 仓库克隆出新的仓库。Git 支持多种协议,包括 https,但 ssh 协议速度最快。

$ git clone git@github.com:user/learngit.git

可以把一个已有的本地仓库与这个 GitHub 仓库关联,然后把本地仓库的内容推送到 GitHub 仓库。第一次推送 master 分支时,加上 -u 参数可以把本地的 master 分支和远程的 master 分支关联起来。

$ git remote add origin git@github.com:user/learngit.git
$ git push -u origin master

通过 git remote rm <name> 命令解除本地和远程的绑定关系,远程仓库本身没有任何改动。如果要真正删除远程仓库,需要登录 GitHub 上删除。

$ git remote rm origin

分支管理

创建 dev 分支,然后切换到 dev 分支。也可以用 git checkout -b 命令直接创建并切换到 dev 分支。

$ git branch dev
$ git checkout dev
$ git checkout -b dev

通过 git branch 命令查看所有分支,当前分支前面会标一个星(*)号。

$ git branch

dev 分支上进行工作,并添加和提交文件后,切换回 master 分支,通过 git merge 命令合并指定分支到当前分支。

$ git merge dev

合并完成后,可以用 git branch -d 命令删除分支。

$ git branch -d dev

解决冲突

当两个分支各自都分别有新的提交,Git无法执行“快速合并”,可以手动编辑文件,解决冲突后再提交。

用带参数的 git log 命令可以看到分支的合并情况。

$ git log --graph

标签管理

切换到需要打标签的分支上,创建一个新标签。默认标签是打在最新提交的 commit 上的。加上 -a 参数可以指定标签名,-m 参数可以指定说明文字。

$ git tag v1.0
$ git tag v0.9 852e113
$ git tag -a v0.1 -m "version 0.1 released" 1ea43fd

通过 git tag 命令查看所有标签。标签不是按时间顺序列出,而是按字母排序的。

$ git tag

创建的标签都存储在本地,不会自动推送到远程。可以用 git push origin <tagname> 命令推送一个本地标签,加上 --tags 选项可以推送全部未推送过的本地标签。

$ git push origin v1.0
$ git push origin --tags

可以用 git tag -d 命令删除本地标签。

$ git tag -d v0.1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值