git总结(根据廖雪峰教程)

来源:互联网 发布:户外运动大数据 编辑:程序博客网 时间:2024/05/22 03:04

----------------------------------------------------------------------------------------------------------------------------------------------------
| 记事本编辑任何文本文件。原因是Microsoft开发记事本的团
| 队使用了一个非常弱智的⾏为来保存UTF-8编码的⽂件,他们⾃作聪明地在每个文件开头添
| 加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,⺴⻚第⼀⾏可
| 能会显示个“?”,明明正确的程序可编译就报语法错误,等等,都是由记事本的弱智
| 为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费!记得把
| Notepad++的默认编码设置为UTF-8 without BOM即可
| stage(或者叫index)的暂存区
|-------
| git add”把文件添加进去,实际上就是把文件修改添加到暂存区,所有修改放到暂存区(Stage)
| git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支,一次性把暂存区的所有修改提交到分支
| git status命令可以让我们时刻掌握仓库当前的状态
| $ git diff readme.txt   ,git diff顾名思义就是查看difference
| 要随时掌握⼯作区的状态,使用git status命令。
| 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
| Git为我们自动创建的第一个分枝master,以及指向master的一个指针叫HEAD
| commit id(版本号)用十六进制表示
| HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100 个版本写100个^比较容易数不过来,所以写成HEAD~100
| $ cat readme.txt  #查看文件内容
| 假设我们从零开发,那么最好的⽅式是先创建远程库,然后,从远程库克隆。
| g'i'tGit支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输命g令,但是在某些只开放http端⼝的公司内部就无法使用ssh协议而只能用https。
----------------------------------------------------------------------------------------------------------------------------------------------------
1、创建本地仓库及初始化:
$ mkdir learngit  #创建文件夹
$ cd learngit   #进入目录
$ git init   #git本地仓库初始化
-----------------------
2.1、本地仓库提交新创建的文件(提交修改和提交新件是一样的两步)
git commit -m "wrote a readme file"   #提交  -m后输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录方便地找到改动记录
-------
2.2、(提交多个文件:)
$ git add file1.txt
$ git add file2.txt
$ git add file3.txt
$ git commit -m "add 3 files
-------
2.3、本地仓库提交修改的文件
$ git add readme.txt  
$ git status #执行第二步git commit之前,我们再运行git status看看当前仓库的状态
$ git commit -m "add distributed"
$ git status
-------
2.4、删除文件(删除也是一个修改操作)
$ rm test.txt  #一般情况下,你通常直接在文件管理器中把没⽤的⽂件删了,或者用rm命令删,误删用$ git checkout -- test.txt

-----------------------
3、 版本回退
版本回退:  回退一个:git reset -hard HEAD^
   回退两个:git reset -hard HEAD^^
   回退多个:git reset -hard HEAD~100
$ git reset --hard HEAD^    #git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区
$ git reset --hard 3628164  #版本号没必要写全,前⼏位就可以了,Git会自动去找
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,git reflog查看命令历史,以便确定要回到未来的哪个版本。
 $ git log --pretty=oneline #git log可以查看提交历史,以便确定要回退到哪个版本
 $ git reflog  #git reflog记录你的每次命令,以便确定要回到未来的哪个版本。
-----------------------
4、撤销
$ git checkout -- readme.txt  #把readme.txt文件在工作区的修改全部撤销,git checkout -- file命令中的“--”很重要,没有“--”,就变成了“创建一个新分支”的命令
$ git reset HEAD readme.txt  #git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
小结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令gitcheckout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
-----------------------
5.1、关联远程仓库,推送本地仓库
远程仓库关联:
git remote add origin https://github.com/jingshiyue/baike_spider.git
或 git remote add origin git@github.com:https://github.com/jingshiyue/baike_spider.git
第一次push到远程仓库: git push -u origin master
第二次push到远程仓库: git push
建议先创建远程仓库,这样不用关联本地和远程仓库
2效果等价于1
1、git init -> (关联)git remote add origin https://github.com/jingshiyue/baike_spider.git -> git pull
2、git clone
添加全部文件:git add -A 添加到缓存
   然后 git commit -"***"

$ git remote add origin git@github.com:michaelliao/learngit.git #关联本地仓库,要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
$ git push -u origin master  #本地库的所有内容第一次推送到远程库上
git pull --rebase origin master #readme文件的同步,不然不能push
$ git push origin master    #推送最新修改
--------
5.2、克隆远程仓库(该命令可以在cmd中操作)
$ git clone 地址

------------------------------------------------------------2017.7.19----------------------------------------------------------------------------------------

git add  添加到缓存区
git commit  -m"  " 提交到本地仓库 ,该命令中必须有-m" ",否则无法提交
git push   推送到远程仓库

遇到的常见错误:
commit时出现Changes not staged for commit :缓存区中没有changes,需要commint前add。


原创粉丝点击