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
把需要更改的commit
的pick
改为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