Git学习笔记
跟廖雪峰的教程学的,在这里记点自己看也没啥用别人看更没用的笔记
账号设置
在安装完git之后,输入
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
创建版本库
创建一个空目录
mkdir learngit
cd learngit
pwd
(PWD) 显示当前目录
把目录变成git可以管理的仓库
git init
当前目录下多了一个.git的目录,是git用来跟踪管理版本库的。
Windows的BOM Byte order mark的问题
把一个文件放入git仓库
git add readme.txt
把文件添加到仓库
git commit -m "here is where you write the message"
把文件提交到仓库
##
git status
查看仓库当前状态,修改,准备提交的情况
git diff
查看修改的difference
git add
提交修改
版本回退
查看提交记录
git log
git log --pretty=oneline
git中的版本表示: HEAD表示当前版本,HEAD^是上一个版本,HEAD^^是上上一个版本,往上100个版本是HEAD~100。
版本回退的方法:
git reset --hard HEAD^
版本回退之后还想回退到之前的HEAD的方法,这里面版本号不用写全
git reset --hard (commit id of HEAD)
在找不到commit id的时候,git reflog
记录每一次命令
撤销修改
丢弃工作区的修改,把readme.txt在工作区的修改全部撤销:
-
readme.txt在修改之后还没有被放到暂存区,撤销修改回到和版本库一模一样的状态。
-
readme.txt已经添加到暂存区,又作了修改,撤销修改就回到添加到暂存区之后的状态。
git checkout --readme.txt
如果已经git add
到暂存区,撤销暂存区的修改
git reset HEAD readme.txt
总结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
文件删除
在文件管理器中删除
rm test.txt
删除错误时,从版本库恢复到最新版本
git checkout -- test.txt
推送到远程库
在github上面新建一个仓库,并且将本地仓库与github上的仓库进行关联。
git remote add origin git@github.com:jiru/learngit.git
查看本地添加了哪些远程地址
git remote -v
删除本地指定的远程地址
git remote remove origin
其中远程库的名字是origin
,这是git默认的叫法。
git push -u origin master
从远程库克隆
github给出的地址不止一个,默认的git://使用ssh,也可以使用https协议。ssh协议更快。
git@github.com:michaelliao/gitskills.git
https://github.com/michaelliao/gitskills.git
分支
创建且切换
git checkout -b dev
创建+切换
git branch dev
git checkout dev
查看当前分支
git branch
切换回到master分支
git checkout master
将dev分支上的工作成果合并到master上
git merge dev
删除分支
git branch -d dev
更为科学的切换分支
git switch -c dev
git log --graph
看分支合并图
分支的普通模式合并
git switch -c dev
git add readme.txt
存储工作区内容
git stash
Saved working directory and index state WIP on dev: f52c633 add merge
查看内容
git stash list
恢复stash的内容
git stash apply
恢复后stash的内容并不删除
git stash pop
恢复的同时删除stash的内容
git cherry-pick
复制一个特定的提交到当前分支
标签
切换到需要打标签的分支
git checkout master
打标签
git tag v1.0
对 commit id 打标签
git log --pretty=oneline --abbrev-commit
git tag v0.9 f52c633
Q&A
为什么github上面新建的仓库分支变成了main。
当然,也可以把main删掉直接用master,main看起来不太得劲。