也许你不会感到惊讶,主张强化知识产权法规的,正是那些从知识产权中获利最多的组织。不是艺术家或创造者自己,而是那些知识产权交易所,那些靠别人的创造力挣钱的公司。对了,当然还有律师。
开源、共享,Linux、Git等,这个人整出来的东西,都是同一类理念!
概念
分布式版本控制:每个人都在本地仓库拥有全部的代码:push、fork
题外话:关于下载国外的软件很慢的情况,通常去找国内淘宝的镜像即可。
配置
# 查看所有配置
$ git config -l
# 查看系统配置
$ git config --system --list
# 全局配置
$ git config --global --list
系统配置文件
用户配置文件
设置用户
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com
免密提交
安装了git就有如下目录,执行ssh-keygen -t rsa
把生成的公钥粘贴到远程仓库设置SSH的地方即可(https克隆的可能不会生效)
# 改https为ssh(切换到对应目录下)
git remote -v
git remote rm origin
git remote add origin git@github.com:ChenCurry/notes.git
git remote -v
# 或
# origin代表远程的源
git remote -v
git remote set-url origin git@github.com:ChenCurry/notes.git
git remote -v
# 然后
git push --set-upstream origin main
# 提交的时候输入yes!!而不是直接回车
模型
- 工作区:平时写的代码/修改的内容。
- 想要撤销更改可以用(慎用):git restore *.md
- 暂存区:英文叫 stage 或 index;一般存放在 .git 目录下的 index 文件中,所以暂存区有时也叫作索引;
- git add .或git add *.md将修改的内容提交到暂存区;
- 状态由untracked/tracked/unmodify/modified变为staged
- 想要撤回可以git restore --staged *.md或git restore --staged .
- 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
- git commit -m(表示message) "xxx"提交到版本库
- 后悔commit这个动作可以使用这个后悔药:git reset HEAD^
- 远程仓库:git push推送到远程(因为git概念中,远程和本地是同级别的)
关注开源许可证
操作大全
案例:Idea配置忽略文件
忽略的文件不会提交到仓库中去
*.txt #忽略以啥啥啥结尾的文件
!lib.txt #但lib.txt除外
/temp #
#某个具体的文件名
build/ #忽略某个目录下的所有内容
doc/*.txt #忽略某个文件夹下的某类文件
操作的话,项目右键Git操作很方便提交到本地仓库,可以在Terminal推送到远程仓库。关注文件名颜色变化。
案例:Git Bash中文乱码
# 中文文件名乱码(git status、git log、git pull 、git push)
# 不对0x80以上的字符进行quote,解决git status/commit时中文文件名乱码
git config --global core.quotepath false
案例:分支合并
# 创建分支命令
git branch (branchname)
# 切换分支命令
git checkout (branchname)
# 列出分支
git branch
git branch -r
# 删除分支命令
git branch -d (branchname)
# 准备合并分支
$ git branch
* master
newtest
$ ls
README test.txt
# 合并分支
$ git merge newtest
案例:合并时冲突
git merge change_site
git diff
git status -s
git add # 告诉 Git 文件冲突已经解决
git commit
案例:远程强制覆盖本地
# 方法一 清除本地修改+拉代码
git reset --hard
git pull
# 方法二
git fetch --all && git reset --hard origin/master && git pull
案例:文件被修改了,但未执行git add
操作,想撤销!
git checkout fileName
git checkout .
案例:同时对多个文件执行了git add
操作,但本次只想提交其中一部分文件
$ git add *
$ git status
# 取消暂存
$ git reset HEAD <filename>
案例:文件执行了git add
操作,但想撤销对其的修改(index内回滚)
# 取消暂存
git reset HEAD fileName
# 撤销修改
git checkout fileName
案例:修改的文件已被git commit
,但想再次修改不再产生新的Commit
# 修改最后一次提交
$ git add sample.txt
$ git commit --amend -m "说明"
案例:已在本地进行了多次git commit
操作,现在想撤销到其中某次Commit
git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]