Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

git 基础

介绍

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

安装配置

win 端下载:https://gitforwindows.org/
linux 端下载:https://git-scm.com/download/linux
配置个人信息

1
2
git config --global user.name "用户名"
git config --global user.email 邮箱

要检查已有的配置信息,可以使用 git config --list命令。

创建克隆仓库

使用当前目录作为 Git 仓库,我们只需使它初始化。

1
git init

从现有 Git 仓库中克隆项目

1
2
3
4
5
# 克隆仓库的命令格式为:
git clone <git仓库>

# 从远程仓库中克隆
git clone git:远程仓库地址

添加、提交与推送

本地仓库由 git 维护的三棵“树”组成。第一个是工作目录,它持有实际文件。
第二个是 暂存区(Index),它像个缓存区域,临时保存改动。

1
2
# 将文件名添加到暂存区
git add <文件名>

HEAD,它指向最后一次提交的结果。

1
2
# 将暂存区中的文件提交
git commit -m "代码提交介绍"

改动现在已经在本地仓库的 HEAD 中了,还需要将这些改动提交到远端仓库,但在那之前需要先将其与远端仓库建立关联。

1
2
3
4
5
# 生成与远程仓库连接的ssh秘钥,将 id_rsa.pub中的key复制,与远端仓库关联
ssh-keygen -t rsa -C "远端git仓库邮箱"

# 将本地仓库的 HEAD 中改动提交到远端仓库对应分支
git push origin 对应分支

分支、更新与合并

分支是用来将特性开发绝缘开来的。在创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

1
2
3
4
5
6
7
8
9
10
11
# 创建一个叫做“feature_x”的分支,并切换过去:
git checkout -b feature_x

# 切换回主分支:
git checkout master

# 再把新建的分支删掉:
git branch -d feature_x

# 除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:
git push origin <branch>

要更新你的本地仓库至最新改动,执行:

1
git pull

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

1
git merge <branch>

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

1
git add <filename>

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

1
git diff <source_branch> <target_branch>

回退与覆盖

git中每次提交会生成一个哈希值作为唯一编码。回退与覆盖操作需要使用这个唯一编码来进行定位。
使用

1
2
# 使用 git log 可查询提交的哈希值
git log

git revert 用于安全撤销某个提交的修改,并生成一个新的提交来记录此次回退操作,不会破坏已有的提交历史,适合已推送到远程仓库的版本回退。

1
2
# 回退操作 <commit_id>为提交哈希值
git revert <commit_id>

git reset 用于重新设定当前的位置,系统不会记录当前操作,意味着这个操作会破坏已有的提交历史,并且造成混乱。
只适合本地版本的回退或重新设定的位置之后的提交彻底没有的情况。

1
2
# 回退操作 <commit_id>为提交哈希值
git reset <commit_id>

参考资料

git 菜鸟教程

评论