1、Git是什么?
Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自 己的版本系统git。 他们对新的系统制订了若干目标:
速度
简单的设计
对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
完全分布式
有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
简单来说git就是版本控制工具,相似功能的工具还有SVN。git和svn的区别是,前者是分布式版本管理工具,后者是集中式版本。GIT把内容按元数据方式存储,而SVN是按文件
git和SVN的区别 更多差异性请看这里
2、GIt安装
2.1在 Linux 上安装
(1)输入下面的指令进行验证,如果出现Git的帮助信息,则说明已经安装了Git,可以跳过安装Git的步骤
git --help
(2)如果确认没有安装Git,则输入下面的指令安装Git
sudo
apt-get update
sudo
apt-get
install
git
要了解更多选择,Git 官方网站上有在各种 Unix 发行版的系统上安装步骤,网址为 https://git-scm.com/download/linux。
2.2在 macOS 上安装
在 Mac 上安装 Git 有多种方式。 最简单的方法是安装 Xcode Command Line Tools。 Mavericks (10.9) 或更高版本的系统中,在 Terminal 里尝试首次运行 git 命令即可。
$ git --version
如果没有安装过命令行开发者工具,将会提示你安装。
如果你想安装更新的版本,可以使用二进制安装程序。 官方维护的 macOS Git 安装程序可以在 Git 官方网站下载,网址为 https://git-scm.com/download/mac。
2.3 初次运行git前的配置
这块每个公司的远程服务器不一样,配置也就不一样,具体配置找SCM询问配置。
/etc/gitconfig
文件: 包含系统上每一个用户及他们仓库的通用配置。 如果在执行git config
时带上--system
选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。)
~/.gitconfig
或~/.config/git/config
文件:只针对当前用户。 你可以传递--global
选项让 Git 读写此文件,这会对你系统上 所有 的仓库生效。当前使用仓库的 Git 目录中的
config
文件(即.git/config
):针对该仓库。 你可以传递--local
选项让 Git 强制读写此文件,虽然默认情况下用的就是它。。 (当然,你需要进入某个 Git 仓库中才能让该选项生效。)
3、常规操作
workspace:本地代码修改区
index:暂存区
local repository:本地版本库
remote repository:远程版本库
提交代码之前,去看下你修改每个仓下的文件,确认是否修改正确
git status ,查看有多少修改
git diff [files] ,查看修改文件
1、提交修改文件从工作区到暂存区
git add 1.cpp 2.cpp 3.cpp
2、将暂存区提交到本地版本库
git commit
3、将修改提交到远程版本库
git push XXX
因为不同仓库的下提交,涉及到不同的库。具体怎么看?需要你看开发的manifest。比如你修改frameworks/av仓下的代码。
git push ssh://你的git账号@gerrit.服务器地址.cn:29418/platform/frameworks/av HEAD:refs/for/分支名字 --no-thin
4、你可能需要了解的知识点
常见命令如下
另外了解细节看这几篇博客准没错
一个小时学会Git - 张果 - 博客园 (cnblogs.com)
https://www.liaoxuefeng.com/wiki/896043488029600
5、撤销修改&版本回退
代码写错了,需要回退
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,
git reset HEAD <file> ,回到了场景1,然后
git checkout – file
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,不过前提是没有推送到远程库。HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令
git reset --hard commit_id。 (前一个的提交的)
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
场景4:删除远程仓库的错误提交
1、强制返回上次的版本(~1回退到上一次提交,~2回退到上两次提交,以此类推)
git reset --hard HEAD~1
2、将本次变更强行推送至服务器;这样在服务器上就能回退到你想回退的位置。
git push –force