设置名称和邮箱
$ git config --global user.name "username"
$ git config --global user.email "email"
git config --list 查看配置
git总共分为这么几个区域:
工作区:也就是我们本地
git暂存区: 此时还没有提交到git仓库
git仓库: 此时是已经提交到git仓库了.
提交到git仓库的文件,接下来就是提交远程了。
---------------------------------------------
查看:
可以通过git status来查看文件状态
------
添加
-----------------------------------------
添加文件到暂存区
git add 文件
将暂存区的文件提交到仓库
git commit -m '描述'
------
修改
--------------------------------------
修改:
那么已经添加到仓库的文件我们需要修改的化,我们是需要重新提交暂存区,再提交仓库
如果是添加到暂存区的文件需要修改的化,我们修改文件后,直接add就可以了,因为之前还没有提交过
-----
删除暂存区文件
----------------------------
如果我们的文件是只提交了暂存区,没有提交到仓库:
1.保留我们工作区的文件,也就是本地的(推荐使用这种)
git rm --cached 文件 (强调,这是删除暂存区的)不删除本地工作区的
如果直接删除本地文件的话,暂存文件还是会存在的,因为我们删除的只是本地的工作区的文件而已
----
删除仓库文件
--------------------------
git rm 文件
git commit -m '删除仓库文件'
这种删除会删除工作区和仓库的文件,并且暂存区的文件也会被删除,没有了
注意:修改仓库的数据一定要提交,
而且删除仓库的文件时,必须是需要和本地工作空间的文件版本相同,
也就是说一定是要最新的版本才会删除成功:
不管只是在工作区修改了,还是修改后添加到暂存区了,最后都要提交到仓库,这个文件才能删除
-----
工作区文件恢复----来自暂存区
--------------------------
文件恢复,如果工作区的文件不小心被删除了,我们可以通过暂存区来恢复,
不管是删除了还是修改了,都可以还原
注意:文件的恢复是来自暂存区,不是仓库
git checkout -- 文件名称
版本回滚:
git reset: 回滚到某次提交
首先我们需要看提交记录 :
git log
每一次提交的记录上面都有一个提交的id ,这个id是我们需要的。
git reset --soft:此次提交之后的修改会被退回到暂存区。
说明:
也就是说会退到这个指定的版本的提交之前,存在暂存区的时候
git reset --hard:此次提交之后的修改不做任何保留,git status 查看工作区是没有记录的。
说明:
暂存区没有这个版本,回退到这个版本还没有修改的时候。
然后回退版本后,我们在推至远程,当然,如果压根就没有使用远程仓库的话就不需要这一步:
git push origin HEAD --force 强制推至远程仓库。
误删恢复
如果回滚代码之后发现复制错了 commit_id,或者误删了某次 commit 记录
git relog // 复制要恢复操作的前面的 hash 值
git reset --hard hash // 将 hash 换成要恢复的历史记录的 hash 值
注意:
删除中间某次提交时最好不要用 git reset 回退远程库,
因为之后其他人提交代码时用 git pull 也会把自己的本地仓库回退到之前的版本,容易出现差错进而增加不必要的工作量。
分支
创建分支
git branch 分支名称
切换分支
git checkout 分支名称
分支提交到远程
git push origin 本地分支名称:远程分支名称 (一般都是写成一样的名字)
分支提交到远程后代码就已经同步复制了
此时,就本地和远程都有新的分支了
查看分支 git branch
-----------------------------------------
那么分支代码怎么提交远程呢?
git push origin 当前分支名字 (除了主分支都需要携带当前的分支名称)
注意:当前分支内的修改不能提交到其他的分支,也就是写了其他分支的名称也不会提交远程成功。
单独拉去某个分支的代码
git clone -b 分支名称 git地址
-b表示分支的意思
但是这种单独拉取分支的方式下,修改代码后,提交代码是不需要去指定分支名称的,
因为我们这里只有这一个分支。
git协议:ssh
上面我使用的https的方式去和github打交道,:
这种方式就是每一次push都需要输入账号密码,邮箱很不方便
所以我们可以使用ssh(密钥的方式来进行交互)
----------------------------------------------------
进入该目录:
cd ~/.ssh
ls
id_rsa id_rsa.pub
私钥 公钥
如果没有我们就需要生产:
首先我们需要在本地生产密钥:
clip < ~/.ssh/id_rsa.pub #最好手动输入,复制容易出问题
然后将 id_rsa.pub 公钥复制到github上
将公钥复制在这里就可以了
这些做好后,通过这个命令来测试一下:
ssh -T git@github.com
看返回的内容来判断是否密钥可用
我们还要来判断git是否可以是要ssh:
git remote -v 来查看
这样的表示是支持ssh
不支持的话我们需要添加:
git remote add origin git@github.com:gww-git/Repository.git
然后我们再来拉取代码,主要,是要ssh的地址才可以
拉取代码的方式都一样的命令,只不过地址变了
git clone xxxxxx
这样就不需要每次push都输入账号和密码了。