Git使用配置记录

版本控制也是一种软件工程技巧,借此能在软件开发的过程中,确保由不同人所编辑的同一程序文件都得到同步

  1. 版本控制在软件开发中,可以帮助程序员进行代码的追踪、维护、控制等等一系列的操作。

Bash -CMD- GUI的区别

  • Git Bash 就是一个 shell,是 Windows 下的命令行工具,可以执行 Linux 命令
  • Git CMD 是 Windows 操作系统上的命令行解释程序
  • Git GUl 它提供了一个图形用户界面来运行 git 命令

GIT配置

  • 每台计算机上只需要配置一次,程序升级时会保留配置信息
  • 可以在任何时候再次通过运行命令来修改它们
设置你的用户名和邮件地址

每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中

  • 配置用户名
    git config --global user.name "XXXX"
  • 配置邮箱
    git config --global user.email "XXXXX"
  • 检查当前配置信息
    git config --list

GIT的使用

获取GIT仓库

1.没有远程仓库

  1. 在当前文件夹下
    git init
  2. 将文件交由GIT管理
    git add .
  3. 提交一次
    git commit -m "初始化项目"

2.有远程仓库

  1. 直接拉取代码
    git clone "XXXXX"

文件状态的划分

  1. 未跟踪
    1. 默认情况下,Git仓库下的文件也没有添加到Git仓库管理中,我们需要通过add命令来操作;
  2. 已跟踪
    1. 添加到Git仓库管理的文件处于已跟踪状态,Git可以对其进行各种跟踪管理
    • 细分
    1. staged:暂缓区中的文件状态
    2. Unmodified:commit命令,可以将staged中文件提交到Git仓库
    3. Modified:修改了某个文件后,会处于Modified状态;

GIT的忽略文件

无需纳入 Git 的管理可以创建一个名为 .gitignore 的文件,列出要忽略的文件

  1. 在实际开发中,这个文件通常不需要手动创建,在必须的时候添加自己的忽略内容即可,
  2. 一些不需要提交的文件、文件夹
  3. 本地环境变量文件
  4. 一些日志文件
  5. 一些编辑器自动生成的文件;

Git的校验和(commit ID)

Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。
基于 Git 中文件的内容或目录结构计算出来,
可以通过ID 来找到对应修改的文件

远程仓库的验证

  1. 方式一:基于HTTP的凭证存储(Credential Storage);
    `$ git config credential.helper
    每一台电脑在首次登录的时候会在本地生成一个凭证,可以在控制面板-凭证管理器里面进行修改或者删除
  2. 方式二:基于SSH的密钥
    1. SSH以非对称加密实现身份验证
    2. 例如其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录;
    3. 另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录
    4. 公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管:
SSH操作方法
  1. 创建一对公钥和私钥
    ssh-keygen -t ed25519 -c "your email" //ed25519 是一种加密类型
    ssh-keygen -t rsa -b 2048 -C "your email"
  2. 找到公钥,本地公钥在用户>.ssh文件夹下
  3. 然后在远程服务器(github)里添加到SSH公钥里面

管理远程服务器

查看远程地址:比如我们之前从GitHub上clone下来的代码,它就是有自己的远程仓库的
git remote
git remote -v -v是-verbose的缩写(冗长的)
远程仓库的默认名字是origin

添加远程地址

也可以继续添加远程服务器(让本地的仓库和远程服务器仓库建立连接)
一个本地仓库可以和多个远程仓库建立链接
git remote add <仓库名字> <远程地址>
git fetch origin main
git branch--set-upstream-to=origin/main 建立上游分支联系

重命名远程地址:git remote rename gitlab glab
移除还程地址:git remote remove gitlab

远程仓库的交互

  • 从远程仓库clone代码:将存储库克隆到新创建的目录中;
    git clone XXXX
  • 将代码push到远程仓库:将本地仓库的代码推送到远程仓库中;
    • 默认情况下是将当前分支(比如master)push到origin远程仓库的:
      git push
      git push origin master
  • 从远程仓库fetch代码:从远程仓库获取最新的代码
    • 默认情况下是从origin中获取代码
      git fetch
      git fetch origin master
      获取到代码后默认并没有合并到本地仓库,我们需要通过merge来合并;
      git merge
      从远程仓库puI代码:上面的两次操作有点繁琐,我们可以通过一个命令来操作
      git pull
      git fetch + git merge(rebase)

Git 分支

Git 的默认分支名字是 master,在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支
master 分支会在每次提交时自动移动:
通过一个名为 HEAD 的特殊指针这个指针指向谁就在那个分支里面

Git创建分支

Git 是怎么创建新分支的呢?
分支只是为你创建了一个可以移动的新的指针
比如,创建一个 testing 分支,你需要使用 git branch 命令:git branch testing

Git切换分支

git checkout xxxxx
git checkout -b xxxxx 创建一个XXX分支并且切换到这个分支

Git分支的合并

git merge 需要合并的分支

查看和删除分支

如果我们希望查看当前所有的分支,可以通过以下命令:
git branch 查看当前所有的分支
git branch -v 同时查看最后一次提交

git branch --merged 查看所有合并到当前分支的分支
git branch --no-merged 查看所有没有合并到当前分支的分支

如果某些已经合并的分支我们不再需要了,那么可以将其移除掉:
git branch -d hotfix 删除当前分支
git branch -D hotfix强制删除某一个分支

Git的工作流(git flow)

在整个项目开发周期的不同阶段,你可以同时拥有多个开放的分支;
比如

  • master作为主分支
  • develop作为开发分支,并且有稳定版本时,合并到master分支中;
  • topic作为某一个主题或者功能或者特性的分支进行开发,开发完成后合并到develop分支中;

Git的远程分支

git push origin develop 推送到git仓库并新建一个develop分支
git branch --set-upstream-to=origin/develop 跟上游分支建立链接
git checkout --track origin/main   跟踪远程分支

  • Git 中用于创建一个新的本地分支,并将其与远程分支 origin/main 关联(即“跟踪”该分支)
  • git checkout develop 简写 作用
    1. 检查服务器是否有origin/deve1op这个分支
    2. 创建一个本地的develop分支
    3. 让本地的develop分支自动跟踪origin/develop
    4. 切换到develop分支

git push origin --delete <branch> 删除远程分支

Git rebase

在 Git 中整合来自不同分支的修改主要有两种方法:merge以及rebase。
git rebase master 把多分支merge的树结构改成线性结构
我们可以再次执行master上的合并操作
git checkout master
git merge experiment

rebase和merge的选择
  • merge用于记录git的所有历史,那么分支的历史错综复杂,也全部记录下来
  • rebase用于简化历史记录,将两个分支的历史简化,整个历史更加简洁
    rebase有一条黄金法则:永远不要在主分支上使用rebase
    如果在main上面使用rebase:会造成大量的提交历史在main分支中不同

GIT的各种命令

检测文件状态

git status

文件添加到暂存区

git add xxxxx
如果我们已经跟踪了某一个文件,这个时候修改了文件也需要重新添加到暂存区中
git add .所有的文件添加到暂存区中:

文件更新提交

git commit
可以在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行

如果修改文件的add操作,加上commit的操作有点繁琐,那么可以将两个命令结合来使用
git commit -a -m"修改了bbb文件'

查看提交的历史

git log
查看一下所有的历史提交记录。
不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面;
命令会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明;

git log --pretty=oneline 在一行里面显示
git log--pretty=oneline --graph 可以显示各个分支的提交

git reflog 可以查看所有操作的历史(包括版本回退)

版本回退

git reset
如果想要进行版本回退,我们需要先知道目前处于哪一个版本:Git通过HEAD指针记录当前版本。

  • HEAD 是当前分支引用的指针,它总是指向该分支上的最后一次提交;
  • 理解 HEAD 的最简方式,就是将它看做 该分支上的最后一次提交 的快照(commit ID);
  1. 上一个版本就是HEAD^,上上一个版本就是HEAD^^;
    git reset --hard HEADN
  2. 如果是上1000个版本,我们可以使用HEAD~1000
    git reset --hard HEAD~1000
  3. 我们可以可以指定某一个commit id; (选择7-8位即可)
    git reset --hard 2d44982

Git标签(tag)

创建tag

对于重大的版本我们常常会打上一个标签,以表示它的重要性

  1. Git 可以给仓库历史中的某一个提交打上标签
  2. 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0、v2.0等等);
    创建标签:
  • Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)
  • 附注标签:通过-a选项,并且通过-m添加额外信息:
    git tag v1.0
    git tag -a v1.1 -m "XXXXX"

默认情况下,git push 命令并不会传送标签到远程仓库服务器上,

  • 在创建完标签后你必须显式地推送标签到共享服务器上,当其他人从仓库中克隆或拉取,他们也能得到你的那些标签;
    git push origin v1.0
    git push origin --tags 会push所有的tag标签

删除和检出tag

  • 删除本地tag:
    要删除掉你本地仓库上的标签,可以使用命令 git tag -d tagname
  • 删除远程tag:
    要删除远程的tag我们可以通过 git push <remote> -delete <tagname>
  • 检出tag:
    如果你想查看某个标签所指向的文件版本,可以使用 git checkout 命令
    通常我们在检出tag的时候还会创建一个对应的分支
    git checkout v1.0
    Note: switching to ‘v1.0’

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇