github镜像站:
指令
建仓相关
git config
设置用户信息,配置用户名和邮箱:
git config --global user.name "盗版摩羯"
git config --global user.email "daobanmojie@qq.com"显示当前的 git 配置信息:
git config --listgit clone
克隆远端已经存在的一个仓库:
git clone https://.../.../xxx.gitgit 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/mastergit rm
从暂存区和工作区中删除文件:
git rm [file2]从暂存区移除add的文件:
git rm --cached [file2]仓库查看
git log
查看历史提交记录
git loggit 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.gitgit pull
从远端拉取代码更改到本地git pull <远程主机名> <远程分支名>:<本地分支名>:
git pullgit 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.proxyPS: 速度非常慢又不想设置代理的可以把链接的 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 –abortPS:自动组织合并两个 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 --recursivegit 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