设置提交代码时的姓名和邮箱
git config user.email user@xx.com
git config user.name 太空眼睛
从远程仓库克隆代码
- 从默认分支克隆代码:
git clone git@github.com:demo/demo.git
- 从指定分支克隆代码:
git clone -b "develop" git@github.com:demo/demo.git
- 带账号密码克隆代码(
@
字符使用%40
代替):git clone http://abc%40qq.com:abc123456@git.xxx.com/demo.git
从远程仓库拉取代码
git pull
- 拉取代码并
rebase
:git pull -r
提交代码到本地
git commit -m "对本次提交的描述"
推送代码到远程仓库
git push
- 同时推送多个远程分支:
git push --atomic origin branch1 branch2
在Git> = 2.4中,该操作可以自动完成(即,如果无法推送指定的任何分支,则不会推送任何内容)
- 把下载后的代码push到新库(需要提前在新库建好project):
git push --mirror https://gitee.com/demo/demo.git
操作远程仓库地址
- 修改
origin
远程仓库地址:git remote set-url origin https://gitee.com/demo/demo.git
- 新增别名为
gitee
的远程仓库:git remote add gitee https://gitee.com/demo/demo.git
操作分支
- 使用-t参数,本地创建一个和远程分支同名的分支:
git checkout -t origin/refactor
- 创建新分支:
git branch new_branch_name
- 创建并切换到新分支:
git checkout -b new_branch_name
- 删除本地分支
git branch --delete dev
git branch -d dev
- 删除远程分支:
git push origin --delete branch
- 删除追踪分支
git fetch origin --prune
git fetch origin -p
操作tag
- 删除远程tag:
git push origin --delete tag <tagname>
取消远程版本控制
- 取消文件
pom-xml-flattened
的版本控制:git rm -r --cached pom-xml-flattened
操作补丁
- 检查补丁是否可以应用:
git apply --check /G/demo/demo.patch
- 应用补丁:
git apply /G/demo/demo.patch
- 有冲突依然应用补丁:
git apply --reject /G/demo/demo.patch
有冲突的文件,会生成同名的
.rej
文件,这个文件里面会记录冲突的具体的代码块
修改备注信息
修改最近一次提交
git commit --amend
修改老旧的备注
- 先查看要修改的提交的父亲的提交id
git reflog -5
- 获取到要修改备注的提交的上一次提交的提交id,即可进入交互页面进行修改
git rebase -i [commit_id]
- 把需要修改的那一行的pick改为reword,然后ctrl+c退出编辑模式,再输入
:wq
,就会进入另一个交互界面,就可以直接修改备注了,修改后再按ctrl+c
,:wq
保存退出即可
cherry-pick
如果要包含提交 A,可以使用下面的语法git cherry-pick A^..B
生成新SSH key
- 在Git Bash中输入
$ ssh-keygen -t ed25519 -C "xxx@xxx.com"
- 可以按默认提示一直回车, 成功后会在
C:\Users\you\.ssh
这个目录下面会生成2个文件
id_ed25519
id_ed25519.pub
把生成的公钥添加到github账号
- 登录gibhub, “Settings” -> “SSH and GPG keys” -> “New SSH key”
- 输入Title, 可以任意输入
- 在Key中复制粘贴
id_ed25519.pub
文件内容
校验SSH Key
在Git Bash中输入
ssh -T git@github.com
如果显示如下信息,则校验通过
Hi xxxx! You've successfully authenticated, but GitHub does not provide shell access.
多个github账号管理
修改C:\Users\you\.ssh\config
文件, 添加如下示例配置
Host github
HostName github.com
User git
IdentityFile C:\Users\you\.ssh\id_ed25519
参考上面校验SSH Key
git配置文件说明
- 全局配置文件路径:
~/.gitconfig
, 通过git config --global
设置的内容都在这个文件 - git服务SSH Key配置:
~/.ssh
- 如果全局配置已经指定了一个用户名和邮箱,但又需要对别的工程在
git commit
的时候显示不同的用户名和邮箱, 可以在工程目录/.git/config
中添加如下内容
[user]
email = xxx@xxx.com
name = xxx
git for windows下的Filename too long
git
有可以创建4096
长度的文件名,然而在windows
最多是260
,因为git
用了旧版本的windows api
git config --global core.longpaths true
git全局忽略配置
git config --global core.excludesfile C:/Users/Administrator/.gitignore
- 修改
.gitignore
添加忽略规则
解决中文文件名显示数字的问题
git config --global core.quotepath false
文章来源:https://www.toymoban.com/news/detail-488675.html
忽略SSL证书问题
git config --global http.sslVerify false
文章来源地址https://www.toymoban.com/news/detail-488675.html
只拉取和提交指定目录
- 打开
sparse checkout
功能:git config core.sparsecheckout true
- 添加目录到
checkout
的列表。路径是版本库下的相对路径,也可以用文本编辑器编辑这个文件echo "REPO_COP/" >> .git/info/sparse-checkout
- 如果以后修改了
.git/info/sparse-checkout
,增加或删除部分目录,可以执行如下命令重新checkout
git checkout master
- 或
git read-tree -mu HEAD
- 要关闭
sparse checkout
功 能,仅仅修改设置,将core.sparsecheckout
设为false
是不生效的,需要修改.git/info/sparse-checkout
文件,用一个”*“号替代其中的内容,然后执行checkout
或read-tree
命令
sparse-checkout 文件设置
- 子目录的匹配
- 在
sparse-checkout
文件中,如果目录名称前带斜杠,如/docs/
,将只匹配项目根目录下的docs
目录,如果目录名称前不带斜杠,如docs/
,其他目录下如果也有这个名称的目录,如test/docs/
也能被匹配。
而如果写了多级目录,如docs/05/
,则不管前面是否带有斜杠,都只匹配项目根目录下的目录,如test/docs/05/
不能被匹配。
- 在
- 通配符
*
(星号)- 在
sparse-checkout
文件中,支持通配符*
,如可以写成以下格式:*docs/ index.* *.gif
- 在
- 排除项
!
(感叹号)- 在
sparse-checkout
文件中,也支持排除项!
,如只想排除排除项目下的docs
目录,可以按如下格式写:/* !/docs/
- 要注意一点: 如果要关闭
sparsecheckout
功能,全取整个项目库,可以写一个*
号,但如果有排除项,必须写/*
,同时排除项要写在通配符后面。
- 在
到了这里,关于【Git】常用命令介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!