Git笔记
版本控制
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一
版本控制最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本, 方便版本切换
集中式版本控制工具
(1)集中化的版本控制系统诸如CVS、SVN(Subversion)、VSS……等,都有一个单一的集中管理的服务器,保存所有文件的修订版本, 而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新
(2)多年以来,这已成为版本控制系统的标准做法, 每个人都可以在一定程度上看到项目中的其他人正在做些什么,管理员可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,远比在各个客户端上维护本地数据库来得轻松容易
(3)缺点是中央服务器的单点故障,如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
分布式版本控制工具
(1)分布式版本控制工具如Git、Mercurial、Bazaar、Darcs…… 这种,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。
(2)这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复,因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
Git简介
(1)Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
(2)几个容易混淆的概念
| 概念 | 简介 |
|---|---|
| Git | 开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。 |
| GitHub | GitHub是世界上最大的代码托管平台,超5千万开发者正在使用。 |
| Gitee | 开源中国推出的基于Git的代码托管服务,中文名:码云 ,原名 Git@OSC ,目前已经托管超过 600 万的项目。 |
| GitLab | GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务 |
(3)代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
1 | 代码托管中心 = 远程库 |
(4)Git 工作机制

Git 常用命令
常用命令
| 命令 | 作用 |
|---|---|
| git config –global user.name 用户名 | 设置用户签名 |
| git config –global user.email 邮箱 | 设置用户签名 |
| git init | 初始化本地库,生成.git文件夹 |
| git add 文件名 | 添加到暂存区 |
| git add -A、git add -all | 把工作区的所有修改添加到暂存区 |
| git commit -m “描述信息” 文件名 | 提交到本地库(默认是master主分支) |
| git status | 查看本地库状态 |
| git diff | 查看修改的内容,已经使用git add之后,不能再查看修改的内容 |
| git log | 查看版本详细信息,git提交的日志信息 |
| git reflog | 查看历史记录,记录每一次git的命令(可用于回滚后忘记最新版的id时找回) HEAD 在git中指代当前版本 HEAD^指上一个,HEAD^^同理 |
| git reset –hard 版本号id | 版本穿梭 |
| git checkout 文件名 | 撤销文件的修改到最近一次git commit或者git add |
| git reset –hard 版本号id | 把工作区内容恢复到指定版本 |
| git reset HEAD 文件名 | 把暂存区的内容清除 |
| git rm 文件名 | 删除文件,删除之后还需要提交(git commit) |
| git mv 文件名 新文件名 | 移动文件到新的路径,如果新的文件名发生改变,则可以理解为重命名 |
远程仓库命令
| 命令 | 作用 |
|---|---|
| git remote | 查看远程库信息,默认显示origin |
| git remote -v | 查看更详细的远程库信息,包括push 和fetch 地址 |
| git remote add origin 仓库地址 | 关联一个github远程仓库 |
| git pull 远程库地址或别名 远程分支名 | 将远程仓库对于分支最新内容拉取下来, 拉取后与当前本地分支直接合并 |
| git push -u 远程库地址或别名 master分支 | 关联远程仓库第一次提交的时候添加上-u参数, 用于把本地以前的commit_log推送到远程库 |
| git push 远程库地址或别名 master | 以后的推送就不需要-u参数 |
| git remote rm 远程库地址或别名 git remote remove 远程库地址或别名 | 移除远程库 |
| git remote add 远程库地址或别名 “Git仓库的ssh格式地址” | 添加远程库 |
| git clone 远程库地址 | 克隆一个已有的远程仓库。address是远程库地址【请忽略<>】 |
分支管理命令
| 命令 | 作用 |
|---|---|
| git branch | 查看当前仓库拥有的分支,以及当前在哪一个分支,分支名前有*表示当前所在分支 |
| git branch -v | 查看分支 |
| git branch 分支名 | 创建分支 |
| git checkout -b 分支名 | 创建一个新的分支并切换到这个新的分支 |
| git checkout 分支名 | 切换到指定分支 |
| git merge 分支名 | 合并分支,把指定的分支合并到当前分支上 |
| git branch -d 分支名 | 删除指定分支 |
| git branch -D 分支名 | 强制删除指定分支 |
| git remote -v | 查看当前所有远程地址别名 |
| git remote add 别名 | 远程地址起别名 |
| git remote add 远程库地址或别名 “Git仓库的ssh格式地址” | 添加远程库 |
| git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
| git clone 远程地址 | 将远程仓库的内容克隆到本地 |
| git stash | 保存当前分支工作现场,可以执行多次 |
| git stash list | 查看当前分支保存的工作现场列表 |
其它命令
| 命令 | 作用 |
|---|---|
| git log –graph | 显示分支合并图 |
| git merge –no-ff | 显示分支合并图,关闭Fast-forward 合并(快速模式),强制禁用快速合并模式进行合并指定分支到当前分支 |
| git stash apply [stash_id] | 恢复现场,方括号内是可选参数(指定恢复) |
| git stash pop [stash_id] | 恢复现场,并删除 |
| git stash drop [stash_id] | 删除现场 |
团队协作
团队内协作
如果没有建立合作,别人无法修改自己代码,想要别人修改,需要先建立合作,然后别人可以下载远程库代码,修改过后还可以上传,自己的远程库代码就会被更新

跨团队协作

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 远方の博客!
评论
GitalkValine





