10分钟入门git

815 阅读6分钟

10分钟入门git

这是一个git使用入门指南,欢迎食用,本文如有错误,欢迎批评指正。

安装

创建新仓库

创建一个新的文件夹很简单,只需要在你需要创建的目录当中打开git终端(或其它终端),然后执行如下命令:

git init

这行代码将会初始化一个新的代码仓库。

克隆仓库

要克隆一个本地仓库,只需要使用 git clone 后跟本地仓库路径即可,如下所示:

git clone /path/to/repository

如果想要克隆一个远程仓库,则 git clone 后跟远程仓库命令即可,如下所示:

git clone username@host:/path/to/repository

git的构成

你所创建的git仓库由 git 维护的三棵“树”构成。第一个是你的工作目录,它包含了一些实际的文件或者文件夹;第二个是暂存区(Index),它就像是一个缓存区域,临时保存你所做的一些改动;最后是HEAD,它指向你最后一次提交代码的结果。如下图所示:

trees.png

添加与提交

使用如下命令,你可以将你的文件添加到暂存区。

git add <filename> # 例如: git add text.txt
# 或使用如下命令直接一键提交所有文件
git add *

使用如下命令,将暂存区的改动提交。

git commit -m "代码提交的信息"

以上命令只是将你的代码提交到了HEAD,还没有提交到远程仓库。

推送改动

当你的代码提交到了HEAD,可以使用如下命令提交到远程仓库。

git push origin master # master 为主分支
# master分支可以替换为任意分支名

如果还没有连接远程仓库,则可以使用如下命令连接到远程仓库,然后再推送代码。

git remote add origin <path> # path为远程仓库路径

分支

在你创建仓库的时候,master 是“默认的”分支。在多人协作下,我们通常都是在其他分支上进行开发,完成后再将它们合并到主分支上。

branches.png

因此我们需要熟悉分支的创建与合并,执行如下命令可以帮助我们创建一个分支,并切换到该分支。

git checkout -b <分支名> # 如: git checkout -b feature-1 将会创建一个feature-1的分支

如果想要切换回master分支,可以使用如下命令。

git checkout master

使用如下命令可以将分支提交到远程仓库。

git push origin <分支名> # 如: git push origin feature-1

当分支合并到master分支之后,如果我们不想要这个分支,即可使用如下命令删除。

git branch -d <分支名> # 如: git branch -d feature-1

更新与合并

通常在多人协作当中,我们修改并提交代码之前,都需要先将远程的更新同步到本地仓库,使用如下命令即可。

git pull [?分支名] # 更新远程代码到本地仓库,git pull后可以跟具体的同步更新分支名,如: git pull origin feature-1 / git pull origin master,如果不写,则代表同步当前的分支 

以上命令主要是在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。如果要合并其他分支到你的当前分支(例如 master),执行:

git merge <需要合并的分支名> # git merge feature-1 如果当前分支是master分支,则该命令将会把feature-1分支合并到master分支

在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功。

git add <filename>
# 或者使用 git add *

然后提交这些改动。

git commit -m "冲突改动"

在合并改动之前,可以使用如下命令预览差异。

git diff <源分支> <当前分支>

但有时候,如果我们做了改动并提交到了暂存区,在这之前却忘记了同步更新,则我们可以使用如下命令强制同步更新。

git pull --rebase # 使用该命令需要注意的就是,如果你能保证你的改动确实不会影响到主分支,并且没有冲突

标签

为软件发布创建标签是推荐的,你可以执行如下命令创建一个叫做 1.0.0 的标签。

git tag 1.0.0 <提交id> # 如: git tag 1.0.0 11d63ff 其中11d63ff是你想要标记的提交 ID 的前 10 位字符

ps: 提交id只要唯一,我们也可以使用提交id的前几位字符,通常6位字符差不多。

如果想要查看提交的ID,我们可以使用如下命令:

git log
# 或者使用如下命令
git reflog # 推荐使用该命令查看提交信息,因为该命令可以看的比较详细

日志

如果你想了解本地仓库的历史记录日志,最简单的命令就是使用:

git log

你可以添加一些参数来修改他的输出,从而得到自己想要的结果。例如只看某一个人的提交记录:

git log --author=<作者名> # git仓库中的那个作者名

同样我们可以使用如下命令查看一个压缩后的每一条提交记录只占一行的输出:

git log --pretty=oneline

或者你想通过树形结构来展示所有的分支, 每个分支都标示了它的名字和标签:

git log --graph --oneline --decorate --all

使用如下命令还可以看看哪些文件改变了:

git log --name-status

更多的信息,可以使用如下命令参考:

git log --help

替换本地改动

假如操作失误(当然,这最好永远不要发生),可以使用如下命令替换掉本地改动:

git checkout -- <filename>

此命令会使用HEAD中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。

假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:

git fetch origin
git reset --hard origin/master
# 该命令还可以跟提交的id,表示代码回退到对应提交id

一些实用的命令

内建的图形化git:

gitk

彩色的 git 输出:

git config color.ui true

显示历史记录时,每个提交的信息只显示一行:

git config format.pretty oneline

交互式添加文件到暂存区:

git add -i

参考链接

图形化客户端。

指南和手册。

文章。