【Git】常用命令介绍

设置提交代码时的姓名和邮箱

git config user.email [email protected]
git config user.name 太空眼睛

从远程仓库克隆代码

从远程仓库拉取代码

  • 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

  1. 在Git Bash中输入
$ ssh-keygen -t ed25519 -C "[email protected]"
  1. 可以按默认提示一直回车, 成功后会在C:\Users\you\.ssh这个目录下面会生成2个文件
id_ed25519
id_ed25519.pub

把生成的公钥添加到github账号

  1. 登录gibhub, “Settings” -> “SSH and GPG keys” -> “New SSH key”
  2. 输入Title, 可以任意输入
  3. Key中复制粘贴id_ed25519.pub文件内容

校验SSH Key

在Git Bash中输入

ssh -T [email protected]

如果显示如下信息,则校验通过

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 = [email protected]
	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

忽略SSL证书问题

git config --global http.sslVerify false

只拉取和提交指定目录

  • 打开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 文件,用一个”*“号替代其中的内容,然后执行 checkoutread-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功能,全取整个项目库,可以写一个*号,但如果有排除项,必须写/*,同时排除项要写在通配符后面。

猜你喜欢

转载自blog.csdn.net/friendlytkyj/article/details/131260642