【Git】学习笔记

1.创建本地仓库

1.1 创建目录###

$ cd D:
$ mkdir test

这里写图片描述
(表示在D盘建立名为test的文件夹,默认在C盘user目录下,创建目录是为了在目录下放文件,然后把此目录作为本地仓库)

1.2 使用本地仓库###

$ cd  D: 进入D盘
$ cd  test  进入test本地仓库。

这里写图片描述

1.3 查看当前仓库目录

$ pwd

这里写图片描述

(这一步是为了确认已经进入到想使用的仓库目录了)

1.4 将进入的仓库 变成可以管理的仓库

$ git init

这里写图片描述
(确认目录无误后,使用这一语法就把目录变为仓库了。用$ ls -ah命令可以看见隐藏目录,用 $ ls 可以查看当前目录下的文件)

2.把文件添加到本地仓库

2.1 将文件放到git文件夹内,格式最好是utf-8

2.2 将文件添加到本地仓库

$ git add  <file>

这里写图片描述
(如:$ git add 123.txt,也可以添加多个文件,如:$ git add 123.txt 456.txt ,用空格隔开)

2.3 把文件提交到本地仓库

$ git commit -m “提交说明”

这里写图片描述
(注意,这句是最终的提交,即把最终写好的文件存入本地仓库,如果不加提交说明则会被引入到添加说明页面,此时的操作办法:按下小写字母i,会进入编辑模式。可以在此模式下输入你想要的commit message(要删除预留文本)。输入结束以后,按下esc退出编辑模式,这时按下英文输入法下的冒号,再输入wq,就可以保存退出了。w是write,q是quit。也可以在按esc退出编辑模式以后,切换到大写模式,连按两下Z。)

3.更新本地仓库(文件改动后再添加)

3.1 可以使用$ git status 随时查看当前仓库的状态

这里写图片描述

上面的命令告诉我们,readme.txt被修改过了,但还没有提交修改。还有一个没有被add过的文件。(untracked)

3.2 可以使用$ git diff <file> 查看具体修改了什么内容

3.3 提交修改后的文件

知道了对readme.txt作了什么修改后,再把它提交到仓库就放心多了,提交修改和提交新文件是一样的:

第一步:$ git add <file>

可以在第一步之后在使用$ git status再查看状态:git status告诉我们,将要被提交的修改包括readme.txt,下一步,就可以放心地提交了)

第二步:$ git commit -m “修改说明” 

3.4 提交后再用$ git status查看状态:

3.5 更新过程总结

——修改文件夹里面的文件
——打开Git 使用:$ git status`查看是否有修改
——添加修改的文件:$ git add  <file>
——提交修改的文件:$ git commit -m “说明”
——查看提交结果:$ git status

4.退回到之前的版本

4.1 查看历史记录

$ git log 

(它显示从最近到最远的提交日志,第一行为commit ID号码)
这里写图片描述

$ git log --pretty=oneline(显示更加清楚)

这里写图片描述

4.2 锁定要退回的版本

HEAD表示当前最新的版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100

4.3 开始回退

$ git reset --hard HEAD^ 
(这样就退回到上一个版本了)

这里写图片描述

5.退回后悔了仍想使用退回之前的版本

5.1 如果命令行没有关闭

往上翻,找到你要的那个版本的commit  ID号,
再键入命令:$ git reset --hard  ID号

这里写图片描述

5.2 如果命令行关闭了

使用$ git reflog打开命令历史,找到你要的版本ID再键入命令:
$ git reset --hard ID号

这里写图片描述

###6.Git核心概念:stage(或者叫index)暂存区
工作区所有更改的文件都被add到暂存区,commit可以一次性把暂存区的内容存到master里面
这里写图片描述

Git跟踪的是修改不是文件,所以每做一次修改就要add一次,改完了再commit,
如:

第一次修改-->add-->commit
第二次修改-->add-->commit

也可以一次性commit:

第一次修改-->add-->第二次修改-->add-->...-->commit

##7.撤销修改的场景
###场景1

当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
$ git checkout -- <file>

###场景2

当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令$ git reset HEAD <file>就回到了场景1,第二步按场景1操作。

###场景3

已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

##8.删除文件
###8.1 删除语法

$ git rm <file>删掉,并且
$ git commit -m “说明”(删除文件必须commit)

这里写图片描述
如果文件被删除,存在两种情况,一是工作区文件被删除了,二是版本库文件被删除了,使用$ git status 可以马上知道哪些文件被删除了

8.2 工作区文件被删除

工作区文件被删除了Git会马上知道版本库与工作区不一致,现在有两个选择,

一是确实要从版本库中删除该文件,那就用命令$ git rm <file>删掉,并且
$ git commit -m “说明”(删除文件必须commit)
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:$ git checkout -- <file>
$ git checkout其实是用版本库里的最新的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

8.3 版本库文件被删除

首先,怎么才能删除版本库里面的文件,方式是退回到低版本,这就代表了把版本库里面最新的文件删除了。其次谈谈如何恢复被删除的版本库文件,其实蛮简单,就跟撤销退回的操作是一样的。
这里写图片描述

###8.4仓库被删除
如果回收站没清空还好说,你把回收站恢复一下就行了,如果清空了。。。要么用数据恢复软件,要么就哭吧。

##9. 远程库

9.1 添加远程库

$ git remote add origin https://github.com/895192534/learngit.git  

(把本地库或者说选中的本地库关联到网上的这个库,origin 是给远程库取的名字,后面分别是库的地址,账户名,库)

9.2 推送更新到远程库

推送方法:$ git push <远程主机名> <本地分支名>:<远程分支名>
例如:$ git push -u origin master:master

(origin是库的名字,表示把当前分支master推送到origin的master上,也可以简写:
$ git push -u origin master
推送前要注意:必须已经提交到本地库,使用commit时注意-m “…”不能忘记了。
推送的核心就是推送分支,就是把该分支上的所有本地提交推送到远程库。
推送时,要指定本地分支,
这样,Git就会把该分支推送到远程库对应的远程分支上:

$ git push origin master

如果要推送其他分支,比如dev,就改成:

$ git push origin dev

9.3 删除远程库

1.用git remote -v (查看远程库信息)
2.$ git remote rm origin(远程库名称) 

这里写图片描述

10.从远程库克隆

$ git clone  https://github.com/895192534/learngit.git

11.查看远程库

$ git remote 或者用更详细的方式:$ git remote -v

##12.同步多个远程库
可以同步多个远程库,只要库名不一样就行了
同步时出现问题:

$ git push gitee master
To gitee.com:ittqqzz/git.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@gitee.com:ittqqzz/git.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

解决办法:
问题的出现是因为远程库的版本比本地库要新(意思就是远程库里面有本地库没有的东西,例如README.md这个创建项目时产生的文件),需要先$ git pull
更新本地库后才能$ git push到远程库里。其实,远程分支上存在本地分支中不存在的提交,往往是多人协作开发过程中遇到的问题,可以先fetch再merge,也就是pull(一个pull操作代表了fetch与merge),把远程分支上的提交合并到本地分支之后再push。
如果你确定远程分支上那些提交都不需要了,那么直接git push origin master -f,强行让本地分支覆盖远程分支,结果是远程库上的内容与本地一样,之前的文件不存在了。(例如README.md这个创建项目时产生的文件没了。。。)

语法:$ git pull 远程库名 分支名:本地分支名
含义:将该远程库下的分支合并到本地某个分支上
结果:本地仓库多了几个来自远程库的文件
也可以用简洁的语法,如果要合并到当前本地分支的话,直接这样:
$ git pull 远程库名 分支名 就够了

##13.删除远程库里面的文件
其实远程库与本地库的操作差不多,只要在本地删除文件并commit后,本地就干净了,再push一下,就把远程库同步了,自然远程库也就干净了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值