Git 程序员必备技能
Posted 王睿丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git 程序员必备技能相关的知识,希望对你有一定的参考价值。
文章目录
一丶Git 是什么?
Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
二丶Git 环境
2.1、下载 git
add-apt-repository ppa:git-core/ppa
apt-get update
apt-get install git
2.2、Git 用户配置
(1)查看用户和邮箱(未配置则为空)
git config user.name
git config user.email
(2)配置/修改用户名和邮箱
git config --global user.name "username"
git config --global user.email "email"
2.3、ssh公钥
(1)检查ssh公钥(未配置则无路径)
cd ~/.ssh
cat ~/.ssh/id_rsa.pub
(2)生成公钥
先配置用户及邮箱再生成
ssh-keygen -t rsa
(3)SSH 公钥使用
将整段字符串copy添加到gitlab中。
三丶Git 命令
git 基本命令
- 查看 Git版本:
git --version
- 初始化仓库:
git init
- 下载远程仓库:
git clone <url>
- 添加文件到暂存区:
git add
- 查看仓库当前的状态,显示有变更的文件:
git status
- 比较文件的不同,即暂存区和工作区的差异:
git diff
- 提交暂存区到本地仓库:
git commit
- 回退版本:
git reset
- 删除工作区文件:
git rm
- 移动或重命名工作区文件:
git mv
- 查看历史提交记录:
git log
- 以列表形式查看指定文件的历史修改记录:
git blame <file>
- 远程仓库操作:
git remote
- 从远程获取代码库:
git fetch
- 下载远程代码并合并:
git pull
- 上传远程代码并合并:
git push
- 还原工作区文件修改:
git checkout .
(.代表所有文件,可指定文件路径) - 还原工作区文件添加:
git clean -rf
(-rf代表全部清除,-f xxx 代表指定文件路径。也可直接rm文件) - 隐藏合并提交:
--no-merges
- 指定日期:
--since、--before、--until 、 --after
例:git log --oneline --before=3.weeks.ago --after=2010-04-18
代表三周前且在四月十八日之后的所有提交
git diff
- 尚未缓存的改动:
git diff
- 查看已缓存的改动 :
git diff --cached
- 查看已缓存的与未缓存的所有改动:
git diff HEAD
- 显示未缓存改动的摘要(路径):
git diff --stat
git checkout
- 清除工作区中未添加到暂存区中的改动:
git checkout .
或git checkout<file>
- 用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件,不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动:
git checkout HEAD .
或git checkout HEAD <file>
git checkout -b AA origin/BB
切换到远程分支BB并在本地生成与之关联的AA分支。为了便于区分,远程分支和本地分支名称通常保持一致。使用次命令前先确认能否查询到远程分支,否则需要git pull -r 同步一下
git commit
- 提交暂存区的文件:
git commit -m
- 提交文件到暂存区+提交暂存区的文件:
git commit -am
git push
-
git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>
-
将本地的 master 分支推送到 origin 主机的 master 分支:
git push origin master
相当于git push origin master:master
-
忽略本地版本与远程版本有差异,强制推送:
git push --force origin master
-
删除主机的master 分支:
git push origin --delete master
节点
- 查看历史提交记录:
git log
- 查看历史提交记录(简洁版):
git log --oneline
- 逆向显示所有日志:
git log --reverse --oneline
- 查看指定分支节点:
git log xxx
- 指定作者节点:
git log --author=xxx
- 检索信息节点:
git log --grep=xxx
- 列举修改文件:
git log --name-status
- 列举修改文件:
git whatchanged(可指定开始节点)
- 列举2个节点修改文件:
git whatchanged -n 2(可指定开始节点)
- 查看节点修改内容:
git show xxx
- 对比两个节点内容:
git diff AAA BBB
四丶Git工作原理
五丶Git 分支管理(高级特性)
5.1、Git 分支概念
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。
有人把 Git 的分支模型称为它的“必杀技特性”,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出。 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。 与许多其它版本控制系统不同,Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。 理解和精通这一特性,你便会意识到 Git 是如此的强大而又独特,并且从此真正改变你的开发方式。
5.2、Git 分支命令
注意:本地至少会有一个 master分支,它是在我们 git init 后被默认创建出来的。
- 创建分支:
git branch (branchname)
- 切换分支:
git checkout (branchname)
- 创建新分支并立即切换到该分支下:
git checkout -b (branchname)
- 合并分支:
git merge
- 删除分支:
git branch -d (branchname)
- 查看本地分支:
git branch
- 查看远程分支:
git branch -r
git branch --set-upstream-to=origin/AA
本地创建的分支第一次push代码时会提示分支未关联,使用次命令是将本地当前分支关联到远程分支AA上。
5.3、实例讲解
以上是关于Git 程序员必备技能的主要内容,如果未能解决你的问题,请参考以下文章