最近用git发现了很多很有用但我不会的操作,所以记下来。
.gitignore
有时我们不需要将本地文件夹下所有的文件都传到仓库,或者我们之前传到仓库的文件夹想要删除。这样我们都需要用.gitignore
来定义。很简单地新建一个.gitignore
文件,在文件里指定需要ignore的文件,然后:
git rm -r --cached .
这里是要删除本地的缓存,一定要加--cached
否则会删除本地文件。.gitignore
只能忽略原来没有被track的文件,所以需要删除本地缓存(将已经track的文件改变成未track状态)。再进行正常的提交。
更改git提交历史中的用户名
已经提交了文件,发现不小心暴露了github账号,emmm….,提交历史也是可以修改的:
参考这篇就可以,为了防止链接挂了,我还是复制一下:
创建一个你的repo的全新裸clone
git clone --bare https://github.com/user/repo.git cd repo.git
复制粘贴脚本,并根据你的信息修改以下变量:
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
执行脚本
查看新的
git log
,git history
确定正确后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]
字段。
文档信息
- 本文作者:weownthenight
- 本文链接:https://weownthenight.github.io/2022/06/18/git%E7%9A%84%E5%B8%B8%E7%94%A8%E5%9C%BA%E6%99%AF/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)