Git学习笔记

 

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 ,就回到了场景1,第二步按场景1操作。

场景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看起来不太得劲。