git命令

By | 2024-11-11

git命令及GitHub关联操作

初始化

  • 初始化设置用户名和邮箱
    git config --global user.name "Your Name"
    git config --global user.email email@mail.com
    git config --global credential.helper store
    

创建仓库

  • 新建一个本地仓库
    git init [project-name]
    
  • 下载一个远程仓库
    git clone [ssh-url]
    # 无法克隆请查看密钥篇及文章末尾注意事项
    

上传文件

  • 查看缓存区
    git status
    
  • 添加新文件至缓存区
    git add .  # 添加当前所有更改文件至缓存区
    git add [newfile]  # 添加指定文件至缓存区
    
  • 添加文件至本地仓库
    # 输入-m参数
    git commit -m "第n次提交"
    # 不输入参数(可逐个编辑文件更新信息)
    git commit
    
  • 参看本地仓库
    # 参看本地仓库提交信息
    git log
    # 参看简捷提交记录
    git log --oneline
    # 查看本地仓库状态
    git ls-files
    

github关联本地仓库密钥

cd
cd .ssh  # 若没有文件夹,需要自行创建
ssh-keygen -t rsa -b 4096  # 创建密钥
    :输入密钥名称(新创建可直接回车创建默认名称)
    :输入密钥密码
    :重复密码
cat [密钥名称].pub
复制密钥
打开github的设置页面
SSH and GPG keys
New SSH keys
写名称、粘贴key
  • 若存在多个密钥,请执行以下操作:
    echo "# github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/[密钥名称]" >> config
    

github关联库操作

  • 关联本地及远程仓库
    git remote add [远程仓库名称] [ssh-url]
    
  • 参看当前及远程仓库的别名和地址
    git remote -v
    
  • 上传远程仓库
    git push -u origin main:main
    # 若本地与远程分支名称相同,可忽略[:main]
    
  • 拉取远程仓库
    # 将远程仓库的修改合并到本地仓库(本地仓库有更改则无法合并)
    git pull [远程仓库名称] [远程分支名称]:[本地分支名称]
    # 仅获取远程仓库修改
    git fetch
    

回退版本

# 仅清空上传
git reset --soft
# 工作区及缓存区都会清空
git reset --hard
# 仅清空暂存区
git reset --mixed

删除文件

git rm [file]  # 删除暂存区及本地文件

注意事项

  • GitHub被DNS污染,git bash的操作类似于linux,需要调整端口与win的clash端口相同才能翻墙访问。

    git config --global http.ptoxy 127.0.0.1:7890
    
  • 当仓库文件数量过多或大小过大,新版git在克隆时会卡死在Receiving objects,解决方法如下(仅windows):

    # 不使用git内置ssh,通过指定win自带的ssh克隆
    git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
    # 其他系统自行指定或退回旧版(2.42以前)
    
  • 当本地仓库版本落后于远程仓库版本时如何强制推送

    # 覆盖远程仓库中对应的分支及其历史记录
    git push -u --force [远程仓库名称] [远程分支名称]:[本地分支名称]