git的常用操作

2022/06/18 Git 共 1548 字,约 5 分钟

最近用git发现了很多很有用但我不会的操作,所以记下来。

.gitignore

参考:.gitignore的用法

有时我们不需要将本地文件夹下所有的文件都传到仓库,或者我们之前传到仓库的文件夹想要删除。这样我们都需要用.gitignore来定义。很简单地新建一个.gitignore文件,在文件里指定需要ignore的文件,然后:

git rm -r --cached .

这里是要删除本地的缓存,一定要加--cached否则会删除本地文件。.gitignore只能忽略原来没有被track的文件,所以需要删除本地缓存(将已经track的文件改变成未track状态)。再进行正常的提交。

更改git提交历史中的用户名

已经提交了文件,发现不小心暴露了github账号,emmm….,提交历史也是可以修改的:

参考:怎么修改git全部已提交的用户名和邮箱

参考这篇就可以,为了防止链接挂了,我还是复制一下:

  1. 创建一个你的repo的全新裸clone

    git clone --bare https://github.com/user/repo.git
    cd repo.git
    
  2. 复制粘贴脚本,并根据你的信息修改以下变量: OLD_EMAIL CORRECT_NAME CORRECT_EMAIL

    脚本:

    #!/bin/sh
       
    git filter-branch --env-filter '
       
    OLD_EMAIL="your-old-email@example.com"
    CORRECT_NAME="Your Correct Name"
    CORRECT_EMAIL="your-correct-email@example.com"
       
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_COMMITTER_NAME="$CORRECT_NAME"
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_AUTHOR_NAME="$CORRECT_NAME"
        export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
    
  3. 执行脚本

  4. 查看新的git loggit history

  5. 确定正确后push:

    origin是remote名。

    git push --force --tags origin 'refs/heads/*'
    

git remote

我好像第一次搞懂这个remote设置,无语了。你可以用git remote查看所有的remote名称。对于不同的远程仓库我们可以用不同的remote名,不一定都叫origin,叫什么都可以。

比如叫sg

git remote add sg https://github.com/....git

提交的时候,remote名称在前,branch名在后,我在这篇Git遇到的坑有提到,github新建的仓库branch好像都改成main了,可能不是master:

git push -u sg master

指定用户名上传

我不止一个Github账户,在某个项目时用这个,在另一个项目时用另一个用户,为了不暴露自己,得充分考虑这个问题。

一般设置用户名和邮箱时都有设置git config --global,这样会导致你所有的本地仓库上传时都会用这一个用户名和邮箱。如果我们想要在某个项目用另一个用户名可以参考:git指定仓库使用特定用户名提交

git config user.name nickname
git config user.email mail@github.com

改动将被保存在.git/config[user]字段。

文档信息

Search

    Table of Contents