首页 技术 正文
技术 2022年11月21日
0 收藏 682 点赞 4,806 浏览 3698 个字

目录

目录

概念

工作区/暂存区/版本库

  1. 工作区:working directory,在当前计算机中创建的目录。可以理解为本地目录。

  2. 暂存区:add 命令将文件的修改添加到暂存区,直到 git commit 将暂存区中的内容全部一次性提交到仓库,可以理解为一个临时中转站。

  3. 版本库 :repository,工作区中有一个隐藏的目录 .git,该目录中的所有的文件都可以被 git 管理起来。每个文件的修改、创建、删除等所有的操作,git都能跟踪,记录相应的版本,方便可以随时恢复到某个版本。可以理解为本地的一个记录库,里面记录了工作区提交的变动。

    明确一点,所有的版本控制系统,只能跟踪文本文件的改动 :创建文件,删除文件,修改文件,添加内容,删除内容等。不跟踪文件夹的改动:如空文件夹的创建。

master

master:创建版本库的时候,git 会默认帮我们创建一个主分支 master,所以此时的 commit 全部提交到版本库中的 master 分支上。其他的都被称为xx分支master分支是一条线,git 用 master 指向最新的提交,再用 HEAD 指向 master。

版本号

  • HEAD :指向的是最新版本
  • HEAD^ :上一个版本
  • HEAD^^ :上上一个版本
  • HEAD~100 :上到100个版本
  • commit id :一般情况下,只有上一个版本使用HEAD^表示,其他的版本统统使用 commit id(提交版本号)。

常见命令

<待补充>

环境搭建

Linux 下 Git 和 GitHub 环境的搭建

  1. 安装Git,使用命令
sudo apt-get install git
  1. 创建GitHub帐号,然后 生成 ssh key,j接下来建立了本机和远程服务器之间的连接,使用命令 :
ssh-keygen -t rsa -C "git注册邮箱地址"
  1. 回到 github,进入Account Settings,左边选择 SSH Keys,Add SSH Key,title随便填,粘贴 key。
  2. 测试ssh key是否成功,使用命令
ssh -T git@github.com
  • 如果出现You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上 github。
  1. 配置Git的配置文件,username和emailgit
config --global user.name "your name"          #配置用户名
git config --global user.email "your email" #配置email

Git 本地操作

本地仓库的创建和使用

  1. .定位到指定的位置,初始化仓库
git init
  • 创建了一个空仓库,仓库本身是抽象,使用目录进行模拟,该目录下有一个隐藏的目录.git[仓库]。.git是用来跟踪管理仓库的,不要手动修改其中的内容。
  1. 修改文件【创建,删除,内容的增加和删除】后,添加改动到缓存区
 git add xxx
  1. 提交到仓库
git commit -m "提交的日志"
  • 一定要书写提交日志,方便后期可以回退版本 。
  • 可以执行多次 add,执行一次 commit,每次只要使用 commit 命令,就相当于产生了一个历史版本。
  • commit 成功之后,会有信息提示 changed【改动】 insertion【插入】 deletion【删除】。
  • add 指的是将改动添加到缓存区,commit 指的是将缓存区的内容提交到仓库,目的为了保证本地的文本和仓库之间的同步。

查看信息

查看状态

查看本地目录和仓库之间是否同步:

git status

查看版本号:

git log                          # 显示详细版本信息,包括改动人,时间,版本提交信息
git log --pretty=oneline # 显示 完整版本号,版本提交信息
git log --oneline # 显示简略版本号,版本提交信息
git reflog # 查看git中执行过的命令,可以确认当前版本。

查看修改

git diff
  • 只能查看add之前本地文件的修改

版本回退

丢弃工作区改动

使用 git checkout 丢弃工作区的改动。

(1)如果工作区的文件提交到缓存区,则恢复为缓存区中的状态 :

git checkout <文件>

(2)如果工作区的文件未提交到缓存区,则恢复为仓库中某个版本的状态:

git checkout HEAD -- [文件]
  • 使用 ‘–‘ 来分隔版本和路径,例如:git <命令> [<版本>…] — [<文件>…]

取消暂存

使用 git reset 取消暂存

(1)取消暂存。默认为全部暂存区的文件,即等于 git reset * ,也可指定文件:

git reset  <文件>

(2)拉取某个版本库的文件到暂存区 并且该操作不影响工作区:

git reset HEAD <文件>
  • 可继续使用 git checkout [文件] 直接恢复到本地。
  • 注意 HEAD 不能是最新版本即 HEAD,因为把最新版本拉取到暂存区,没有意义,暂存区是存放改动的地方,不能存放没有改动的文件。

(3)改动了工作区,进行了add,也进行了commit,这时候就需要 回退版本 了:

git reset --hard HEAD^

删除文件

删除文件对于git而言,被认为是一个修改

  1. 删除工作区中的文件
 rm -rf filename
  1. 删除版本库中的文件
 git rm filename
  1. 将删除的修改提交到版本库
git commit -m "xxx"

忽略监控

  1. 进入git管理的项目文件夹中,创建 .gitignore 文本,就可以在该文本中设置要忽略的文件了。【 .gitignore 】这个文件本身会提交到版本库中去。用来保存的是公共的需要排除的文件。

  2. 如果.gitignore忽略规则创建于文件提交代码库之后,则.gitignore规则不会影响目前所提交的文件(不会自动把文件从服务器端删除掉)。需要手动删除,用如下的方式:

git rm --cached <FILENAME> -f
git rm --cached <DIR> -r
  1. 文件.gitignore的格式规范:
  • #为注释
  • 可以使用shell所使用的正则表达式来进行模式匹配

  • 匹配模式最后跟 “/” 说明要忽略的是目录

  • 使用 !取反。例如目录中包含 test.a,并且 .gitignore 文件中包含 *.[oa],如果在文件中加入 !test.a 表明忽略除 test.a 文件以外的后缀名为 .a 或者 .o 的文件)

  • 示例:

# 此为注释 – 将被 Git 忽略*.a               # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

GitHub 远程操作

从 GitHub 克隆项目到本地

  1. 到GitHub的某个仓库,然后复制右边的有个“HTTPS clone url”。 回到要存放的目录下,使用命令
git clone https://github.com/.....git
  1. 如果本地的版本不是最新的,可以使用命令
git fetch origin                # origin是本地仓库
  1. 把更新的内容合并到本地分支,可以使用命令
git merge origin/master
git pull <本地仓库> master # 这个命令可以拉取最新版本并自动合并

从本地上传到 GitHub

  1. 进入要所要上传文件的目录输入命令
git init
  1. 创建一个本地仓库 origin,使用命令
git remote add origin git@github.com:yourName/yourRepo.git
  • youname 是你的 GitHub 的用户名,yourRepo 是你要上传到 GitHub 的仓库,远程仓库名最好和本地仓库名保持一致。
  • origin 表示的是远程仓库中的主分支,对应的是本地仓库中的 master,origin 可以是别的名称,但是建议使用 origin。
  1. 添加文件xxx到远程仓库,使用命令
git add xxx                  # 添加缓冲到本地的仓库
git commit -m "提交说明" # 正式提交到本地的仓库
git push origin master # 提交到远程的GitHub仓库
  • 可以执行多次add,执行一次commit,每次只要使用commit命令,就相当于产生了一个历史版本。

Git的分支管理

存亡和切换

  1. 创建一个本地分支:
git branch <新分支名字>
  1. 切换到新建立的分支:
git checkout <新分支名>
  1. 从本地删除一个分支:
git branch -d <分支名称>

查看分支

  1. 查看当前仓库有几个分支:
git branch

管理分支

  1. 将本地分支同步到GitHub上面:
git push <本地仓库名> <新分支名>
  1. 为你的分支加入一个新的远程端:
git remote add <远程端名字> <地址>
  1. 同步到GitHub上面删除这个分支:
git push <本地仓库名> :<GitHub端分支>
  1. 将子分支合并到主分支
git merge <子分支>
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,955
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,479
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,291
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,108
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,740
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,774