Git: 常用手册之-命令指南

586 阅读6分钟

简介

温故知新,整理一下git相关命令,方便再忘记的时候快速查找和定位,顺便分享给大家;

在Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。基于这一特点,Git在断网后依旧可以在本地对项目进行版本管理,只需联网后,把本地修改的记录同步到云端服务器即可

使用Git 管理的项目,拥有三个区域,分别是工作区、暂存区、Git 仓库。如果把这些区域比作现实中纸质文件的人工处理和收纳管理,三个区域分别负责的任务是:

工作区:负责处理工作的区域。
暂存区:已完成的工作的临时存放区域,等待被提交。
Git 仓库:最终的存放区域

Git三种状态:

已修改:表示修改了文件,但还没将修改的结果放到暂存区
已暂存:表示对已修改文件的当前版本做了标记,使之包含 在下次提交的列表中;
已提交:表示文件已经安全地保存 在本地的Git 仓库中。

注意: 工作区的文件被修改了,但还没有放到暂存区,就是已修改状态。 如果文件已修改并放入暂存区,就属于已暂存状态。 如果Git 仓库中保存着特定版本的文件,就属于已提交状态。

Git合并单个commit

首先,我们需要把A分支上提交的部分代码,放在B分支上

git checkout B  // 切换到B分支
git cherry-pick 43aea9af  // 把某一次的commit合并到B分支,其中’43aea9af‘是某次commit提交记录的ID
git push origin B  // 把分支B推送到远程仓库

Git如何删除远程分支

切换到master分支

git checkout master

查看已有的本地及远程分支

git branch -a

删除远程分支

git push origin --delete dev

删除后,再次查看分支情况

git branch -a

删除本地分支

git branch -D dev

远程分支和本地分支删除完毕

Git切换到远程分支,并且获得最新的代码

git checkout -b 本地分支名x origin/远程分支名x

使用上面的命令可以创建分支名并且关联到远程的分支,但是远程分支存在gitpush多次,发现关联分支的本地代码不是最新的,只需pull最新的代码就行

处于当前的分支,执行以下命令

git pull

Git查看远程分支

git branch -a

若执行以上命令仍看不到远程分支

  1. 先用git fetch命令更新remote索引

  2. 再用git branch -a查看

Git cherry-pick直接应用别人分支提交的特定commit

不需要切换分支,只需要git fetch同步下本地代码,然后执行下面语句: git cherry-pick e4c7fee7c2bbcb951da3a539f6780746b4cf29da

Git fetch (origin xx远程分支名)

直接拉取指定分支

Git命名返回代码到指定版本

  • git reset HEAD是指将当前head的内容重置,不会留log信息。
  • git reset HEAD filename  从暂存区中移除文件
  • git reset --hard HEAD~3  会将最新的3次提交全部重置,就像没有提交过一样。
  • git reset --hard ****[ commit 哈希值] (386790fba5bb8dd235f8) 回退到 386790fba5bb8dd235f8 版本

根据--soft --mixed --hard,会对working tree和index和HEAD进行重置:

该图片来源这位大佬的:以沫wh image.png

Example

我要彻底返回在上一次提交以前的版本 git reset --hrad HEAD~1

我要回到上一次提交的版本:git reset --hard

Git切换仓库地址

  • git remote -v 查看当前仓库地址
  • git remote set-url origin (url) 切换更改当前远程分支地址,直接替换

需要重新登录git用户名密码才能生效 查看当前分支及git仓库地址(可忽略此步骤,个人习惯而已)

  1. git remote

  2. git remote -v

  3. 移除当前仓库地址

    git remote rm origin

  4. 移除后可以用git remote -v 命令查看是否移除成功,移除成功后添加目标仓库地址

    git remote add origin 目标仓库地址

  5. 添加后照样可使用git remote -v 命令查看当前仓库,确认为目标仓库后,就可拉去或者推送代码,但是由于是两个不同的仓库,拉取、推送代码时可能会遇见分支相关问题,根据提示使用相关指令:

Git密码设置

查看用户信息

  • git config credential.helper store . 输入该命令后再次输入账号密码会自动保存到.git配置中

  • 查看用户名 :git config user.name

  • 查看密码: git config user.password

  • 查看邮箱:git config user.email

  • 查看配置信息: $ git config --list   修改用户名

    git config --global user.name "xxxx(新的用户名)"

    修改密码git config --global user.password "xxxx(新的密码)"

修改邮箱

git config --global user.email "xxxx@xxx.com(新的邮箱)"

移除用户名和邮箱

git config --global --replace-all user.name"你的 git 的名称"

git config --global --replace-all uesr.email"你的 git 的邮箱"

修改本地密码(此操作是克隆项目时账号密码错误使用,可以在克隆报错时自动提示键入密码)

gitconfig--system--unsetcredential.helper

设置记住密码(默认15分钟):

git config --global credential.helper cache

如果想自己设置时间,可以这样做:

git config credential.helper 'cache --timeout=3600'

CRLF (Carriage Return + Line Feed)

在使用 Git 进行版本控制时,会存在换行符的问题。在不同的操作系统和文本编辑器中,换行符的表示方式可能会有所不同。主要有两种方式:

  1. LF (Line Feed) :这是 Unix 和类 Unix 系统(如 Linux 和 macOS)中使用的换行符。在 Git 中,LF 被视为标准换行符。
  2. CRLF (Carriage Return + Line Feed) :这是 Windows 系统中使用的换行符。它由回车符(Carriage Return,CR)和换行符(Line Feed,LF)组成,两个字符一起表示换行。

当你在 Git 中进行 git add 操作时,Git 会尝试检测文件的换行符格式,并根据配置自动进行转换。如果你的操作系统是 Windows,且 Git 配置中 core.autocrlf 设置为 true,那么 Git 在添加文件时会将 LF 转换为 CRLF。

如果你希望禁用自动换行符转换,可以在使用 git add 之前,在 Git 配置中将 core.autocrlf 设置为 false。

git config --global core.autocrlf false

Copy

Bash

这样,git add 操作后不会自动进行换行符转换。

请注意,换行符的转换可能会导致文件内容的变化,因此在跨平台协作或共享代码时,建议将换行符格式统一为 LF,以避免不必要的问题