git 提交项目的push 和pull
(http://www.cnblogs.com/tugenhua0707/p/4050072.html)
一:创建版本库。
什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
Git有三大区(工作区、暂存区、版本库)以及几个状态(untracked、unstaged、uncommited)打开你的项目文件夹,除了隐藏的.git文件夹,其他项目文件位于的地方便是工作区,工作区的文件需要添加到Git的暂存区(git add),随后再提交到Git的版本库(git commit)。
push的过程:
第一步:在宿主机上创建一个目录 (这是一个本地仓库,这个目录包括两部分一个是.git文件里面有暂存区和版本库,除了.git文件的其余部分就是工作区)
git status 查看当前目录的状态
git init 初始化这个目录改变成git可以管理的仓库
这时你的目录下就会多一个.git
这个目录是git用来跟踪管理版本的 没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了
接下来把文件添加到版本库中
首先要明确下,所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等,Git也不列外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道。
第二步:你要以一个git的账号并建立一个仓库:
第三步:使用git add命令将文件添加到暂存区中
先将文件移动到工作区中
git add 文件名 是将一个文件添加到暂存区中:
git add -A 是将版本库中的所有文件添加到暂存区中
第四步:再提交前需要先设置你的基本信息
git config user.name "username"
git config user.email "username@XXX.com"
否则你会出现以下问题
原因分析:是因为在创建git文件夹的时候信息不完善导致的
解决方法:在命令行中执行
git config --global user.email "你的邮箱"
git config --global user.name "你的名字"
git config --global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
注意:如果你发现自己提交到暂存区中发生了错误可以执行以下命令进行撤回
可以参照整一篇博客(https://www.cnblogs.com/cposture/p/git.html)
git rm --cache 文件名 只会删除暂存区中的文件 我用了这个
git rm -f 文件名 会将暂存区和工作区中的文件都删除
如果 不仅添加到了暂存区,而且commit到了版本库,这个时候就不能使用git rm了,需要使用git reset命令。
git reset有三个选项,--hard、--mixed、--soft。
=====================================
仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
git reset --soft 版本库ID
仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --mixed 版本库ID
彻底将工作区,暂存区和版本库记录恢复到指定的版本库
git reset --hard 版本库ID
=====================================
第五步:用命令 git commit告诉Git,把文件提交到版本库。
git commit -m "提交的文件" //提交的时候要加上说明文件
提交成功后可以查看日志信息
以一个比较好的格式进行显示日志的信息
$ git log --pretty=oneline
$ git log --oneline 以一个较为简洁的方式显示部分日志信息
$ git reflog
git remote add origin https://github.com/tugenhua0707/testgit.git
第一种方式:
如果出现:
第二种方法:
如果是另外一个错误:
出现错误:原因1:
因为我是直接创建了一个文件到D盘里面然后才去初始化的,那就导致无法与远端进行同步,虽然我之前使用了git remote add origin xxx(远端仓库地址)但这也仅仅是本地与远端建立了连接,并不是同步了,如果我是 直接从远端clone下来的就可以直接用git push -u origin master就完事了,但是现在报错也是很明显的,我们并没有同步,所以我们需要把远端和本地同步,放心,关于是不是会覆盖的问题其实完全不需要担心,我们Git肯定帮我门解决了,只有没有的东西才会被pull下来,具体的命令就是git pull --rebase origin master,ok再来一波git push origin master完美解决
如果你此时修改了工作区中的文件那么就会出现
上面的命令告诉我们 readme.txt文件已被修改,但是未被提交的修改
git diff readme.txt 查看修改之后的内容
第一步是git add 第二步是:git commit
版本回退:
我想把当前的版本回退到上一个版本
git reset --hard HEAD^ 回退上一个版本
git reset --hard HEAD^^ 回退到上上个版本
git reset --hard HEAD~ n 回退到第n个版本
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。 版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。 我们前面说过使用Git提交文件到版本库有两步: 第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。 第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
git 撤销修改和删除操作
命令 git checkout --readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销,这里有2种情况,如下:
- readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
- 另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态
clone 的过程:
打开 repository->Git Bash输入