Git备查丶

也许你不会感到惊讶,主张强化知识产权法规的,正是那些从知识产权中获利最多的组织。不是艺术家或创造者自己,而是那些知识产权交易所,那些靠别人的创造力挣钱的公司。对了,当然还有律师。

开源、共享,Linux、Git等,这个人整出来的东西,都是同一类理念!

img

概念

分布式版本控制:每个人都在本地仓库拥有全部的代码:push、fork

img

题外话:关于下载国外的软件很慢的情况,通常去找国内淘宝的镜像即可。

配置

# 查看所有配置
$ git config -l
# 查看系统配置
$ git config --system --list
# 全局配置
$ git config --global --list

系统配置文件

image-20201023174439692

用户配置文件

image-20201023182218025

设置用户

$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

免密提交

安装了git就有如下目录,执行ssh-keygen -t rsa

image-20201023200111528

把生成的公钥粘贴到远程仓库设置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概念中,远程和本地是同级别的)

img

img

关注开源许可证

image-20201023210701946

image-20201023210946576

操作大全

https://gitee.com/all-about-git

https://www.runoob.com/git/git-branch.html

案例:Idea配置忽略文件

忽略的文件不会提交到仓库中去

image-20201023201709564

*.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]
posted @ 2020-10-29 14:36  夜雨秋池  阅读(76)  评论(0编辑  收藏  举报