Git备忘录

Git 是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到超大型项目的所有项目。

Git 易于学习,占用空间小,性能快如闪电。它超越了 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具,具有廉价的本地分支、方便的暂存区域和多个工作流程等功能。

– 来自git-scm的官方介绍

git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL许可协议发布。最初目的是为了更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools(一个类似Norton Commander界面的文件管理器)不同。

git最初的开发动力来自于BitKeeper和Monotone。git最初只是作为一个可以被其他前端(比如Cogito或Stgit)包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制。很多被广泛使用的软件项目都使用 git 进行版本控制,其中包括 Linux 内核、X.Org服务器和OLPC内核等项目的开发流程。

Git备忘录 #

git创建仓库 #

在本地初始化仓库,然后将本地仓库与一个 GitHub 上的空仓库连接起来。

$ mkdir lrepo
$ cd lrepo
$ git init
$ git remote add origin [url]

git clone一个已存在于 GitHub 上的仓库,包括所有的文件、分支和提交(commits)

$ git clone [url]

git全局配置 #

## 配置用户名
$ git config --global user.name "[name]"

## 配置邮箱
$ git config --global user.email "[email address]"

### 配置彩色输出
$ git config --global color.ui auto

git分支 #

分支是使用 Git 工作的一个重要部分。你做的任何提交都会发生在当前“checked out”到的分支上。使用 git status 查看那是哪个分支。

### 创建一个新分支
$ git branch [branch-name]

### 切换到指定分支并更新工作目录(working directory)
$ git switch -c [branch-name]

### 将指定分支的历史合并到当前分支。这通常在拉取请求(PR)中完成,但也是一个重要的 Git 操作。
$ git merge [branch]

### 删除指定分支
$ git branch -d [branch-name]

git变更操作 #

浏览并检查项目文件

### 检查当前分支的版本历史
$ git log

### 检查指定文件的版本历史,包括重命名
$ git log --follow [file]

### 检查两个分支之间的内容差异
$ git diff [first-branch]...[second-branch]

### 输出指定commit的元数据和内容变化
$ git show [commit]

### 添加文件进行快照处理用于版本控制
$ git add [file]

### 将文件快照永久地记录在版本历史中
$ git commit -m "[descriptive message]"

git重做变更 #

清除错误和构建用于替换的历史

### 撤销所有 [commit] 后的的提交,在本地保存更改
$ git reset [commit]

### 放弃所有历史,改回指定提交。
$ git reset --hard [commit]

小心!更改历史可能带来不良后果。如果你需要更改 GitHub(远端)已有的提交,请谨慎操作。

.gitignore文件 #

有时一些文件不需要用Git跟踪,可以通过自定义.gitignore来实现该功能。

你可以在github.com/github/gitignore找到有用的.gitignore文件模板。

git同步变更 #

### 下载远端分支的所有历史
$ git fetch

### 将远端分支合并到当前本地分支
$ git merge

### 提交上传所有本地分支
$ git push

### 获取远端分支的所有新提交更新你当前的本地工作分支。
### git pull 是 git fetch 和 git merge 的结合。
$ git pull

一些有用的资料 #