Linux上Git配置文件的位置
/etc/gitconfig:所有用户适用
~/gitconfig:当前用户适用
.git/gitconfig:当前仓库适用
低级别配置将覆盖高级别的相同配置。
Git的三棵树
Git有三棵树:本地工作区(Working Tree),暂存区(Index),本地库(HEAD)。暂存区可不仅仅是一个缓存区。本地库是不会删除的。
删除远程库中所有提交记录
删除 .git 文件夹可能会导致 Git 存储库中的问题。如果要删除所有提交历史记录,但将代码保持在当前状态,可以按照以下方式安全地执行此操作:
1. 尝试运行 `git checkout --orphan latest_branch`
2. 添加所有文件 `git add -A`
3. 提交更改 `git commit -am "commit message"`
4. 删除分支 `git branch -D master`
5. 将当前分支重命名 `git branch -m master`
6. 最后,强制更新存储库 `git push -f origin master`
git rm 命令解释
假设现在有demo.txt文件,并且已经提交。
1. git rm 删除工作区和暂存区文件
运行 git rm demo.txt 后 使用git status查看:
On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) deleted: a.txt
解释:本地和暂存区都没有了,等价于先在本地删除文件,并且add。
2. git rm --cached 仅删除暂存区文件
执行 git rm --cached命令后 使用git status查看:
On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) deleted: demo.txt Untracked files: (use "git add <file>..." to include in what will be committed) demo.txt
对第2-4行的解释:
使用该命令将文件从暂存区删除,那么暂存区和本地库的差异体现为 demo.txt删除。
对第5-7行的解释:
暂存区没有了该文件,本地工作区和暂存区相比就多了一个未追踪的文件。
3. 该命令常见用途:删除已经提价到远程仓库的 .idea, .seting 文件/文件夹(项目构建自动生成的)
git rm -r .idea git commit -m 'remove .idea' git push origin master
如果想回退版本库,但是不想丢弃本地工作,比如想要重新提交怎么办?
使用git reset HEAD <filename> 既可。该命令会回退版本库,并清空暂存区,但是不改变本地工作区。
Windows凭据
当推动到远程时,例如GitHub,需要输入用户名和密码,第二次就不用再输入,这个不是Git的功能,而是Windows的凭据管理器记住了用户名和密码。如果下次想要切换账户,可以删除此凭据。
使用SSH
有些系统并没有凭据管理,使用http的方式每次都要输入账号密码很麻烦,此时可以使用ssh。使用ssh的缺点是只能一个用户提交,不能像windows凭据那样删除后,就可以重新切换用户提交。
本地生成ssh并添加到github后,本地库需要做以下修改:
使用git remote -v可以查看远程库和url,可以看到还是orgin还是https的方式:
此时可以重新设置origin的地址为 git@github.com:atguigu2018ybuq/huashan.git,也可以新建一个远程库地址为origin_ssh,而不删除https的方式。
注意添加完远程库后,还需要为本地分支设置追踪,否则在push和pull时要手动指定远程仓库地址和远程分支。
pull request 流程
每次在发起新的 Pull Request 时要去拉取最新的源仓库的代码
而不是自己 fork 的那个仓库。
git remote add <shortname 源仓库> <url 源仓库>
git fetch 远程仓库名字
git merge 对应的远程跟踪分支