GIT学习笔记
看着SovietPower一直没有弃更,还发现自己的博客还有人看,所以想继续写写。
以后尝试记录下自己的学习笔记,课程作业一类的。
1、设置用户名和设置邮箱
$ git config --global user.name "menjianotng"
$ git config --global user.email "menjiantong@foxmail.com"
$ git config user.name // 查看用户名
$ git config user.email // 查看用户邮箱
$ git config --global --unset user.name "menjiantong" // 取消设置的用户名
$ git config --global --unset user.email "menjiantong@foxmail.com" //取消设置的邮箱
2、创建本地库
版本库:版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
$ cd F:
$ mkdir ceshi_git
$ cd ceshi_git
$ pwd // 显示当前路径
$ git init // 初始化,把这个目录变成Git可以管理的仓库
3、把文件添加到版本库
git其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。
首先本地创建一个文件(readme.txt),并将这个文件放到ceshi_git下(子目录也可以),否则git找不到。然后我们尝试将这个文件添加到git仓库。
$ git add readme.txt
$ git commit -m "提交了readme.txt" // 引号中为本次提交的说明
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
git add < file> 可以使用多次,然后使用一次git commit
一次把他们提交到git仓库。
4、版本回退
此时我们可以不停的修改readme.txt,并且再每次修改了提交,然后如果对文件修改是出了错误,便可以使用git查看修改了什么地方,并回退的最后一次正确的地方。
$ git log // 查看修改日志
$ git log --pretty=oneline // 以一行形式查看
$ git reset --hard HEAD^ // 回退到上一版本
$ git reset --hard HEAD^^ // 回退到上上版本
$ git reflog // 查看命令历史,并可以查询到每个版本的id,可以版本前进(与回退对应)
$ git reset --hard ____ // ____上可以输入每个版本的id
5、工作区和暂存区
工作区(Working Directory):电脑里能看到的目录,比如ceshi_git文件夹就是一个工作区
暂存区:即stage部分,使用git add可以将文件添加到这里
master:即git控制的仓库,Head为指针。
注意:每次修改没有将文件放到stage(暂存区),必须用git add命令才可以更新到stage,然后用git commit提交到仓库。
比如,
1、git add readme.txt
2、修改readme.txt
3、git commit -m "提交readme.txt"
此时提交的是未改变的readme.txt
$ git diff HEAD -- readme.txt // 提交后,可以使用此命令可以查看工作区和版本库里面最新版本的区别
6、撤销修改
如果在本次工作区将本地文件写错了,可以使用git从本地版本库恢复。
1、本地文件写错,但没有添加到暂存区(stage),此时
$ git restore <file> // 从本次版本库恢复
$ git checkout -- <file> // 从本地版本库恢复
2、本地文件写错,提交到了暂存区
$ git restore --stated <file>
$ git reset HEAD <file>
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
3、提交到了暂存库,使用版本回退恢复。
7、删除文件
现在从本地工作区删除了一个文件,git仓库中却有这个文件。
1、如果确实需要删除,可以从git仓库中删除。
$ git add text.txt // 添加text.txt到缓存区
$ git commiet -m "提交text.txt到git仓库" // 添加text.txt到git仓库
$ rm text.txt //删除本地工作区的text.txt
$ git status // 此时显示delete text.txt,此修改没有进入缓存区
$ git rm text.txt // 从git仓库删除,
$ git status // 此时显示delete text.txt,此修改已经进入缓存区
$ git commit -m "删除了text.txt" // 此时git仓库已经更新,没有了text.txt
2、不小心删除了,可以从本地git仓库恢复
$ git checkout text.txt // 从本地git仓库恢复
8、远程仓库
cd ~/.ssh //查看本地ssh key
ls // 当前文件下的所有文件,包含 id_isa 和 id_isa.pub
$ ssh-keygen -t rsa -C "youremail@example.com" // 如果没有,使用这个生成密钥,一路回车
(id\_rsa)和(id\_rsa.pub)这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
9、使用github建立仓库
1、添加ssh_key
登录github->setting->ssh and GPG keys->New ssh keys
将id-isa.pub的内容复制进去即可
2、创建github仓库
创建成功后
这里有仓库的https和ssh,github推荐使用一下代码创建一个新的仓库或者从本地的git版本库上传。
//create a new repository on the command line 创建github远程仓库
echo "# ceshi_git" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:menjiantong/ceshi_git.git
git push -u origin main
//push an existing repository from the command line 上传本地github仓库
git remote add origin git@github.com:menjiantong/ceshi_git.git // menjiantong为用户名,ceshi_git为远程github仓库名
git branch -M main // 将默认分支改名为main
git push -u origin main
3、上传本地git仓库到github远程仓库
在本地的ceshi_git仓库下运行上面的三行命令,因为我们添加了本地ssh_key,所以是可以推送上去的。
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
通过上面三行可以将本地库与远程仓库关联,以后每次本地修改都可以推送到远程仓库进行更新。
本地库也可以和远程库取消关联(但github远程仓库不会真正删除,需要从网站上删除)
$ git push // 当本地仓库进行了改变时,使用这一行命令可以将本地库推送到和远程仓库
$ git push origin master // 应该等同于上面,廖雪峰博客写的
$ git remote -v // 查看远程仓库信息
origin git@github.com:michaelliao/learn-git.git (fetch)
origin git@github.com:michaelliao/learn-git.git (push)
$ git remote rm origin
未完
参考:廖雪峰的博客