github镜像站:


指令

建仓相关

git config

设置用户信息,配置用户名和邮箱:

git config --global user.name "盗版摩羯"
git config --global user.email "daobanmojie@qq.com"

显示当前的 git 配置信息:

git config --list

git clone

克隆远端已经存在的一个仓库:

git clone https://.../.../xxx.git

git init

用于在目录中创建新的 Git 仓库,该命令执行完后会在当前目录生成一个 .git 目录【通常隐藏文件夹】:

git init

仓库操作

git add

将文件写入暂存区。
添加一个或多个文件到暂存区:

git add [file1] [file2]

将当前目录下的所有文件添加到暂存区:

git add .

git commit

将暂存区内容添加到本地仓库中:

git commit -m [message]

git reset

退回某一次提交的版本 git reset [--soft | --mixed | --hard] [HEAD]

回退所有内容到上一个版本:

git reset HEAD^

回退三个版本 [ --hard : 强制执行,忽略没有提交的更改]:

git reset --hard HEAD~3

回退到指定版本号 [ 查看commit 的编号]:

git reset --hard 44b838a3

本地的回退到和远程的一样:

git reset --hard origin/master

git rm

从暂存区和工作区中删除文件:

git rm [file2]

从暂存区移除add的文件:

git rm --cached [file2]

仓库查看

git log

查看历史提交记录

git log

git status

查看文件有无更改

git status

标签操作

git tag

查看标签:

git tag

在当前commit ID版本打标签git tag -a <tagname> -m "注解"

git tag -a v1.0 -m 'Version 1.0'

追加标签到指定版本:

git tag -a v1.1 c7ed41 -m 'my version 1.1'     #给版本号c7ed41的代码添加标签。

推送单个标签:

git push origin v1.0

推送本地全部标签:

git push origin --tags

删除远端标签:

git tag -d v1.0     #git tag -d <tagname>
git push origin :refs/tags/tag_name

远端操作

git remote

用于在远程仓库的操作。
git remote add 添加远端仓库地址:

git remote add origin https://.../.../xxx.git

git pull

从远端拉取代码更改到本地git pull <远程主机名> <远程分支名>:<本地分支名>

git pull

git push

推送本地更改到远端git push <远程主机名> <本地分支名>:<远程分支名>

git push

关闭CRLF替换LF

git config --global core.autocrlf false
git config --global core.safecrlf false

关闭ssl验证

报错提示 OpenSSL SSL_read: Connection was reset, errno 10054

git config --global http.sslVerify "false"
git config --global https.sslVerify "false"

或者将地址 https:// 改为 git:// ,避开SSL验证。


应用

创建项目

方式一:克隆仓库

克隆一个空的远端仓库,并提交README。

git clone https://.../.../xxx.git
cd xxx
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

方式二:已有文件夹或仓库

本地已经有项目,并在远端创建了仓库。

cd dir_xxx 
git init
git remote add origin https://.../.../xxx.git
git add .
git commit -m "注释"
git push -u origin master

代理

# 设置代理
git config --global http.proxy http://127.0.0.1:8889 #端口号查看vpn代理的http设置
git config --global https.proxy http://127.0.0.1:8889 #端口号查看vpn代理的http设置

#设置socks5代理
git config --global http.proxy socks5://127.0.0.1:1089

# 查看代理:
git config --global --get http.proxy
git config --global --get https.proxy

# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

PS: 速度非常慢又不想设置代理的可以把链接的 github.com 改成 github.com.cnpmjs.org 。

合并commit

这里的commid值,是先提交的值。

git rebase -i [分支名或commit的hash值]

修改对每个commit记录需要持行的操作
第一列是commit的持行命令,命令含义如下:

  • pick:意思是要会执行这个 commit
  • squash:将这一行的 commit 与上一个 commit 进行合并
  • fixup:与 squash 相同,只是不会保留这行 commit 的提交 message 信息

撤销修改

git rebase –abort

PS:自动组织合并两个 commit git rebase -i –autosquash

配置 SSH 密钥

查看 SSH 密钥。

cat ~/.ssh/id_ed25519.pub

如果没有生成,生成语句

ssh-keygen -t ed25519 -C "<您的邮箱>"

再次查看并复制内容粘贴到托管平台

添加submodule

git submodule add [库地址]

xxx1项目添加使用xxx2项目

cd xxx1
git submodule add https://.../.../xxx2.git
git add .
git commit -m "Add submodule"
git push

使用submodule

git submodule update --init --recursive
git clone  https://.../.../xxx1.git
cd xxx1
# 指定版本没有可以忽略
git checkout v4.2 
git submodule update --init --recursive

分支

git branch [要创建的分支名]

基于你当前所在的这个分支最后一次提交的文件创建新的分支。

git checkout [要跳转到的分支名]

切换到指定分支名的分支。

git merge [要合并的分支名]

例如:创建并跳转到newbranch分支工作,最后把分支合并到master

git branch newbranch
git checkout newbranch
...
git checkout master
git merge newbranch

删除分支

git branch -d [要删除的分支名]

删除远端分支

git push origin -d [要删除的分支名]

合并分支
将分支合并到master

git checkout master
git  merge [要合并的分支名]

合并单条commit

git checkout A           # 切换到分支A
git cherry-pick 2555c6e  # 把分支B的某次提交 2555c6e(哈希值) 同步到到分支A
git push                 # 把分支A的代码推送上去

下拉分支

git fetch <远程主机名> <分支名>
下拉并切换到v1.0.0分支

git fetch origin v1.0.0
git checkout origin v1.0.0

修改历史commit的提交人

git rebase -i HEAD~n【其中的n为记录数】

git rebase -i HEAD~3
pick 1 commit 1
pick 2 commit 2
pick 3 commit 3

把需要更改的commitpick改为edit后保存退出。

edit 1 commit 1
edit 2 commit 2
pick 3 commit 3

输入amend命令重置commit 2的用户信息:

git commit --amend --reset-author

进行下一步

git rebase --continue

更改commit 1的信息

git commit --amend --reset-author

进行下一步

git rebase --continue

提示Successfully rebased and updated refs/...

推荐配置

# 忽略文件权限的配置
git config core.filemode false                // 当前版本库
git config --global core.fileMode false       // 所有版本库

# 禁止自动换行
git config --global core.autocrlf false   

# 关闭SSL检查
git config --global http.sslverify false
git config --global https.sslverify false

# xian'shi
git config --global core.quotepath false          // 不转义中文字符
git config --global gui.encoding utf-8            // 配置GUI编码
git config --global i18n.commitencoding utf-8     // 配置提交时的编码
git config --global i18n.logoutputencoding utf-8  // 配置日志输出的编码

# 编辑配置文件
git config --global -e
# 查看配置文件
git config --global -l
最后修改:2022 年 12 月 09 日
男宾一位~ 欢迎下次再来!