一、gitee的使用
origin 起源
remote 远程
reset 重置
1.1git的使用
1.创建仓库:
a.创建远程仓库
登入Gitee后,点击头像旁边的”+”加号–>新建项目
填写项目基本信息后直接点击创建,这样一个远程仓库就已经创建完成了。
b.初始化本地仓库
1)Git Bash安装(安装git的过程不再赘述)
本地仓库的初始化需要借助软件Git Bash 来完成。点击前往Git官网
下载适用您的电脑的Git版本,下载完成后运行安装程序,过程中使用默认选项即可,若须修改安装路径,须保证安装路径为全英文。
2)获取SSHKey
首先要在本地创建一个ssh key 这个的目的就是你现在需要在你电脑上获得一个密匙。:Gitee 提供了基于SSH协议的Git服务,在使用SSH协议访问仓库之前,需要先配置好账户/仓库的SSH公钥。
注意:这里的 xxxxx@xxxxx.com
只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。
按如下命令来生成sshkey:
$ ssh-keygen -t rsa -C "youremail@youremail.com" 我的:ssh-keygen -t rsa -C 2422xxxx326@qq.com
# Generating public/private rsa key pair...
# 三次回车即可生成 ssh key
查看你的 public key
$ cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2E... youremail@youremail.com
并把他添加到Gitee(gitee.com SSHKey添加地址)
添加后,在终端中输入(他这里是将gitee与github进行对比,我们只用gittee的命令就行了)
#Gitee
$ ssh -T git@gitee.com
#GitHub
$ ssh -T git@github.com
第一次绑定的时候输入上边的代码之后会提示是否continue,输入yes后程序会自动连接,如果要求登录,直接输入登录信息即可。
再次执行上面的命令,检查是否成功连接,如果返回一下信息,则表示添加成功。
#Gitee
Welcome to Gitee.com, YourName!
#GitHub
You've successfully authenticated, but GitHub does not provide shell access.
首次使用需要确认并添加主机到本机SSH可信列表。若返回 Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access.
内容,则证明添加成功。
添加成功后,就可以使用SSH协议对仓库进行操作了。
3) 设置基本信息
接下来还需要简单的设置一些东西。
name尽量和码云或GitHub保持一致,但email必须是码云或GitHub注册时使用的邮箱。命令不分前后,没有顺序。
$ git config --global user.name "yourname"
$ git config --global user.email "youremail@youremail.com"
这里是在配置提交代码时,会用到的全局用户名与邮箱,用来标识是谁提交的代码的,我在使用github时,已经配置过了,这里不再配置了。
4)初始化本地库
然后就是将你的远程仓库克隆到本地,或者你可以在本地初始化一个项目后再进行云端绑定。
克隆
#Gitee
$ git clone https://gitee.com/yourname/repository
#Github
$ git clone https://github.com/yourname/repository.git
#yourname 您在码云或github注册的用户名
#repository 您创建的远程仓库名称
本地初始化
#Gitee
$ cd d:/test //首先在文件系统中创建一个项目文件夹,然后在Git中 cd 到这个工程目录
$ git init //初始化本地项目
$ git remote add origin <远程仓库地址> //绑定远程仓库
#注:地址形式为 https://gitee.com/yourname/test.git 或 git@gitee.com:yourname/test.git
我的:git remote add origin https://gitee.com/be-careful-at-the-xxx/demo.git
#Github
$ cd d:/test
$ git init
$ git remote add origin <远程仓库地址>
#注:地址形式为 https://github.com/yourname/test.git
c.更新到远程仓库
在本地进行编辑后,更新到远程仓库
git add . //指定更新内容 . 表示全部更新,test.txt 表示更新指定文件 git commit -m "一些注释说明" //添加更新说明 git push origin master //执行更新操作
在执行更新操作时,由于需要验证远程仓库的用户信息,程序反应较慢,不要以为Git Bash挂掉了哦
如果是第一次更新,那么可能会跳出下面这样的窗口,输入您的用户名和密码,点击登录即可。
用户名并不是注册时的姓名,而是下面这个鬼:
如下图,是我自己的操作:
初始化后,执行
git remote add origin https://gitee.com/be-careful-at-the-beginning/demo.git
没有任何反应,也没有提示让输入用户名,密码;去gitee上看,也没有提交上去任何东西。
然后我就直接新建了一个1.txt文件,执行完
git add 1.txt
git add . 为暂存所有文件
git commit -m 首次提交
以后。向gitee进行push时,如下图:提示让我输入用户名密码,第一次报错是因为用户名输入错了;第二次提示是因为404,是因为gitee上没有一个叫demo的项目,我再次执行
git remote add origin https://gitee.com/be-careful-at-the-beginning/demo.git
后,提示:致命:远程原点已经存在。
$ git remote add origin https://gitee.com/be-careful-at-the-beginning/demo.git fatal: remote origin already exists.
很无语,然后手动在gitee上创建了一个叫demo的项目,再次执行,出现下图提示,push成功,查看gitee,确实提交上去了。
git push origin master
5)如何从远程仓库同步最新版本到本地
$ cd d:/test
$ git pull origin master
6)如何清屏
$ clear
参看链接:
https://www.cnblogs.com/einstein-2014731/p/11492637.html
https://blog.csdn.net/qq_38215042/article/details/109406958
1.2回滚代码
1、暂存代码
git add . 提交本地所有变更到暂存区
git add 文件名 提交指定文件
2、查看未提交的(未commit的,add的与没有add的都会显示)
git status 查看改变的文件列表
git status -s 查看改变的文件列表简化版
3、查看已经commit未push的
git cherry -v origin/master
5、删除本地变更(未add的)
git reset --hard
git clean -xdf
git checkout 文件名
6、撤销add
git reset HEAD 文件名
7、查看不在暂存区的文件(即工作区的文件)发生的改变(即本地文件与本地仓库的不同)
git diff或者git diff filename
8、查看暂存区与本地仓库的不同
git diff --cached或者git diff --staged
9、查看本地仓库与暂存区、工作区不同的汇总
git diff HEAD是git diff和git diff --cached的合并
10、撤销commit
Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交1094adb...
(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
git reset --soft HEAD~1 撤回最近一次的commit(撤销commit,不撤销git add)后面跟的数字是第几次commit
git reset --mixed HEAD~1 撤回最近一次的commit(撤销commit,撤销git add)
git reset --hard HEAD~1 撤回最近一次的commit(撤销commit ,撤销git add,还原改动的代码)
出现如下报错:
$ git reset --hard "HEAD^" fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'
查了下原因可能有两种:
因为cmd控制台中换行符默认是^,而不是 ,所以^符号被git编译为换行符了,解决方案:
git reset --hard "HEAD^"
git reset --hard HEAD~[return times]
该仓库到目前为止只有commit过一次代码,故已经是head版本,也会报这样的错。
我这里报这个错误的原因是因为只commit过一次代码。
commit两次代码后,再执行命令:
git reset --soft HEAD~1
结果如下图:
通过git log可以看出来,第二次的commit直接没有了,而且本地的变更也删除了,直接退回到了cc5b…这个变更集的内容。
最新的那个版本26c13...
已经看不到了!好比你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?
办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个26c13…的commit id
是26c13…,于是就可以指定回到未来的某个版本:
$ git reset --hard 26c13...
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD
指针,当你回退版本的时候,Git仅仅是把HEAD从指向26c13…。
然后顺便把工作区的文件更新了。所以你让HEAD
指向哪个版本号,你就把当前版本定位在哪。
现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id
怎么办?
在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^
回退到add distributed
版本时,再想恢复到append GPL
,就必须找到append GPL
的commit id。Git提供了一个命令git reflog
用来记录你的每一次命令:
$ git reflog e475afc HEAD@{1}: reset: moving to HEAD^ 1094adb (HEAD -> master) HEAD@{2}: commit: append GPL e475afc HEAD@{3}: commit: add distributed eaadf4e HEAD@{4}: commit (initial): wrote a readme file
终于舒了口气,从输出可知,append GPL
的commit id是1094adb
,现在,你又可以乘坐时光机回到未来了。
11、查看提交日志
git log
git log --pretty=oneline
12、丢弃工作区的修改
git checkout -- file
git checkout -- file
命令中的--
很重要,没有--
,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout
命令。
13、删除文件
在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt
到Git并且提交:
$ git add test.txt $ git commit -m "add test.txt" [master b84166e] add test.txt 1 file changed, 1 insertion(+) create mode 100644 test.txt
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm
命令删了:
$ rm test.txt
这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status
命令会立刻告诉你哪些文件被删除了:
$ git status On branch master Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) deleted: test.txt no changes added to commit (use "git add" and/or "git commit -a")
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
:
$ git rm test.txt rm 'test.txt' $ git commit -m "remove test.txt" [master d46f35e] remove test.txt 1 file changed, 1 deletion(-) delete mode 100644 test.txt
现在,文件就从版本库中被删除了。
12、更新代码
git fetch
git pull
13、推送代码到远程仓库
git push
14、先存储代码到本地
git stash
参看链接:
https://www.liaoxuefeng.com/wiki/896043488029600/896954074659008
二、起别名
参看链接:https://www.liaoxuefeng.com/wiki/896043488029600/898732837407424
三、idea连接gitee
3.1idea连接gitee
参看链接:https://blog.csdn.net/seventeenliu/article/details/110187861
如果错过太阳时你流了泪,那你也要错过群星了。
在所有的矛盾中,要优先解决主要矛盾,其他矛盾也就迎刃而解。
不要做个笨蛋,为失去的郁郁寡欢,聪明的人,已经找到了解决问题的办法,或正在寻找。