Skip to content

Latest commit

 

History

History
255 lines (142 loc) · 9.7 KB

04-Git常用指令.md

File metadata and controls

255 lines (142 loc) · 9.7 KB

Git简介

Git 是分布式版本控制。分布式版本控制系统没有中央服务器,每个人都有一个完整的版本库,通过各自的修改推送给对方,使得可以多个人协作。

Git 数据库其实是一个简单的“键值对(key-value)”数据库。向该数据库中插入任意类型的内容,它都会返回一个键值。通过返回的键值可以在任意时刻再次检索该内容。

Git 用于版本控制可解决以下问题:

  • 辅助合并代码并灵活切换各个历史版本;

  • 区分代码提交人、比较任意两个版本差异;

  • 多人协作开发;

image-20240330160819655

基本分为工作区Workspace、暂存区index、本地仓库Repository、远程仓库Remote,

另外在远程和本地仓库之间还有/refs/remote,是远程仓库的一个只读引用,不可修改。

git常用操作

pull(拉取):获取远程仓库中的代码更新,并且合并到本地仓库中(pull=fetch+merge)

fetch(获取):获取远程仓库的代码更新(remote->/refs/remote)

merge(合并):将获取到的远程更新合并到本地仓库(/refs/remote->Repository)

commit:(提交):将更新的代码提交到本地仓库

push:(推送):将更新的代码推送到远程仓库

commit and push:(提交且推送):将更新的代码提交到本地仓库后推送到远程仓库----常用

diff:(比较差异):比较本地的最近一次受版本控制(提交或拉取后)的文件与该文件修改后的
差异----常用

diff with previous version:(与上一版本比较差异)比较本地的上一次受版本控制的
(上一次提交或拉取)文件与该文件修改后的差异

show log:(显示日志):显示远程仓库所有开发提交记录日志(要看最新的首先拉取)----常用

show Reflog:(显示引用日志):显示自己本地仓库的所有操作(从克隆开始,克隆、拉取、提交)

check for modifications:(检查已修改)好像功能与diff(比较差异)差不多

revert:(还原):还原代码至最近一次版本控制(可以单个还原和批量选择还原)----常用

clean up;(清理):删除某些文件,如未受版本控制文件、忽略文件

add:(添加):可以把未受版本控制文件加入本地仓库
git init -b "name": 指定新的分支
git branch -a :显示所有分支
git branch "name": 创建分支
git checkout -b "name": 创建并立即切换到指定的分支
git checkout  "name": 切换到指定分支
git merge :合并分支
git add . : 提交修改(workspace->index)
git stash: 暂存
git branch -m "oldname" "newname":修改分支名
git merge "name":把指定分支合并到主分支(/refs/remotes->Respostory)
git commit -m 'text':将本地暂存的修改提交到版本库,并加注释

Git 基本组成框架:

  • Workspace:开发者工作区,也就是你当前写代码的目录,它一般保持的是最新仓库代码。
  • Index / Stage:缓存区,最早叫Stage,现在新版本已经改成index,位于.git目录中,它用来存放临时动作,比如我们做了git add或者git rm,都是把文件提交到缓存区,这是可以撤销的,然后在通过git commit将缓存区的内容提交到本地仓库
  • Repository:仓库区,是仓库代码,你所有的提交都在这里,git会保存好每一个历史版本,存放在仓库区,它可以是服务端的也可以是本地的,因为在分布式中,任何人都可以是主仓库。
  • Remote:远程仓库,只能是别的电脑上的仓库,即服务器仓库。

Git 命令:

  • 配置 Git 环境:初次使用git需要设置你的用户名以及邮箱,一些需要登录权限的仓库会要求登录,git默认使用配置邮箱以及用户名登入,但会要求你手动输入密码。

    git config --global user.name "你的用户名"
    git config --global user.email "你的邮箱"
  • 创建本地仓库:需要一个空文件夹,先 mkdir 创建一个,再 cd 进入,在空目录下 git init 初始化当前仓库;初始化后会生成隐藏的 Git 的配置文件目录,可以用 ls -ah查看。

  • 添加文件到缓存git add

  • 提交到本地仓库git commit -m "commit 信息",不加后面信息的话会打开编辑器让你写。

  • 重新上一次提交信息git commit --amend,之后会打开编辑器。

  • 查看历史提交日志git loggit reflog

  • 回滚代码仓库git reset --恢复等级,有三个等级:

    • 使用--soft就仅仅将头指针恢复,已经 add 的暂存区以及工作空间的所有东西都不变。
    • 如果使用--mixed,就将头恢复掉,已经 add 的暂存区也会丢失掉,工作空间的代码什么的是不变的。
    • 如果使用--hard,那么一切就全都恢复了,头变,aad 的暂存区消失,代码什么的也恢复到以前状态。
  • 回滚到指定历史版本:先使用 git log 查看历史版本,再使用 git reset --hard 要回滚id 命令回滚。

  • 单个文件回滚git log 文件名git reset 要回滚id 文件名

  • 查看提交之后文件是否做了改动git status

  • 将文件撤销回到最近一次修改的状态git checkout -- file

  • 创建分支:使用 git checkout -b 分支名 参数来创建一个分支,创建完成分支后会自动切换过去。

  • 查看分支git branch,也就是查看HEAD的指向。

  • 切换分支git checkout 分支名

安装git:

yum install git

终端直接输入git,会告诉你git的各种使用方法

1683439309212

想让当前文件夹用Git管理,现将当前文件夹变成Git仓库,进入文件夹输入命令

git init

在目录中新建一个文件newfile.txt

vim newfile.txt

查看当前状态,说newfile.txt未被追踪,需要用git add 文件名提交

git status

1683440034894

提交之后,再查看状态,显示修改将要被提交

git add newfile.txt
git status

1683440221282

如果要提交所有的文件修改,可git add .

修改newfile.txt,再查看状态,修改没有被添加。

1683440492512

git diff命令可以查看两文件的区别,即还没有被添加的更改内容到底是什么。如下图,可以看出我加了一个“change”

1683440644141

git add .添加更改

1683440492512

git reset撤回更改,文件又没有被追踪了

1683440904418

加提交人,加邮箱,以后提交就会显示是我的提交

git config --global user.name "lizhengxiao"
git config --global user.email  "[email protected]"

git commit把修改提交,-m后面加修改的描述

1683441575077

有些新文件只想放在文件夹里,但不想提交由git管理,可以建立一个.gitignore,写入这些文件的文件名列表。

如果git已经追踪一个文件,再把它加到.gitignore列表中,git还是会继续追踪它。必须先停止追踪它

git rm --cashed newfile1

1683442868403

git commit -a可以添加所有修改,再提交,但以前没追踪过的文件不会被添加进去

git branch 分支名创建分支,git checkout 分支名进入分支,git branch查看分支

1683443497967

在主分支下,git merge 分支名合并分支。合并后子分支还在,可以git branch -d 分支名删除;分支没合并的时候想删除,会提示,用D才能删。

1683444080049

把文件上传到GitHub托管,建立仓库,他会提示你怎么上传

1683444583188

git remote add告诉Git项目在网上的位置在哪

git remote add origin https://github.com/LiZhengXiao99/d.git

如果不保存密码,每次push都要输入git密码,先执行下面命令,即可保存密码

git config credential.helper store

git push将更改上传

git push --set-upstream origin master

邀请别人合作,在setting-Collaborators里,搜他的用户名,邀请会发到对方的邮箱里,对方同意之后,也能对项目提交更改。

对方先将仓库复制到自己的电脑

git clone 仓库链接

对方修改后,我再git pull就会将项目最新的文件都拉到本地