Git学习(1)

参考网站:廖雪峰教程

git是一个分布式版本控制系统。各个操作系统安装与设置git

创建版本库

在windows上进入git bash界面,在特定目录上建立一个空目录,然后切换至该目录,执行

git init

把空目录作为git仓库。

所有的版本控制系统,都只可以跟踪文本文件的改动,(对图片/视频等二进制文件的版本控制效果不好,对word无法跟踪)不要使用widows自带的记事本编辑文本文件,推荐使用notepad++,并把notepad++的默认编码设置为UTF-8 without BOM.

把文件放入仓库

自己用notepad++编写一个文本文件,提交到git仓库需要2个步骤:

git add readme.txt     //用git add把文件添加到仓库

git commit -m "wrote a readme file"     //使用git commit命令把文件提交到仓库   -m后输入本次提交的说明,尽量输入有意义的内容

//git add也可以一次添加多个文件
git status    //git status可以查看工作区的状态

git diff       //git diff 文件 可以查看在工作区中被修改的文件的内容

版本回退

git log    //使用git log 可以查看我们的历史提交,从近到远的提交日志
git log --pretty=oneline      //可以更简洁地查看历史提交
在git中,HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上一个版本,HEAD~100表示往上100个版本
回退至上一个版本:
    git reset --hard HEAD^
如果回退之后又后悔了,只要找到之前删除的版本的commit id即可,这个可以在当前屏幕里找(穿梭未来)
    git reset --hard 1094a  //可以只输入版本号的部分即可
如果电脑关机重启后,当前屏幕丢失了,仍然想回到之前删除的版本,可以(穿梭未来)
    git reflog   //从这里看出之前的版本号

工作区/暂缓区

工作区即电脑中可以看到的目录,比如之前创建的一个空目录。工作区有一个隐藏目录.git,这不是工作区,是git的版本库。

git版本库中有一个称为stage的暂缓区+git自动创建的第一个分支master+指向master的一个指针HEAD

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

即可以理解为需要提交的文件修改通通放到暂缓区,然后一次性提交暂存区的所有修改到当前分支。

git跟踪管理的是修改,并非文件。即git只会提交提交在暂缓区中的修改,而对工作区的未提交到暂缓区的修改不提交到分支。

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

这样第二次的修改不会被提交,因为没有add到暂缓区。

撤销修改

如果对工作区的修改还未add到暂缓区

git checkout -- readme.txt
//这可以撤销readme.txt文件在工作区的修改

如果对工作区的修改已经add到了暂缓区,但还未commit,使用下列命令可以把暂存区的修改退回到工作区。

git reset HEAD readme.txt

执行上述操作后,再执行git status发现暂存区是干净的,工作区有修改,这个时候可以执行git checkout命令进一步删除工作区的修改。

但是如果对工作区的修改已经从暂存区提交到了版本库,这个时候可以使用版本回退命令(但前提是还没有把本地版本库推送到远程,一旦推送到远程,就不会再回退了)

删除文件

假如在工作区新建了一个文件,并通过git add命令把它添加到暂缓区,再通过git commit把它添加到版本库。如果要删除文件,可以直接在bash命令行执行以下命令,即在工作区删除文件

rm test.txt

但是这个时候版本库和工作区就不一致了,使用git status命令可以发现这种差别

有2种情况需要考虑:

(1)确定需要从版本库中删除该文件,先git rm删除,再git commit

git rm test.txt
git commit -m "remove test.txt"

(2)如果确定删错了,可以使用之前介绍的撤销工作区修改的命令git checkout

git checkout -- test.txt

git checkout其实是用版本库中的版本替换工作区中的版本,无论工作区是否修改,都可以“一键还原”。

远程仓库

找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。要注册一个GitHub账号,就可以免费获得Git远程仓库。

设置本地git仓库与github仓库之间的传输:here

添加远程库(先有本地库,后有远程库时关联远程库)

在本地创建一个git仓库,然后在github上创建一个git仓库,并且让这2个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作

(1)登陆github,创建一个新仓库。

这个仓库目前是空的,我们可以从这个仓库克隆出新的仓库,也可以把已有的本地仓库与之关联,然后把本地仓库的内容推送到github仓库。

(2)在本地把已有的git仓库与远程github仓库关联

git remote add origin git@github.com:mickaelliao/learngit.git
//自己执行时,把mickaelliao换成自己的github帐号,learngit是远程github的仓库名

(3)把本地内容推送到远程库中

git push -u origin master
//master是当前分支的名字,即把当前分支mastrt推送到远程,第一次推送时,远程库是空的,需要加-u
//此后的推送中,可以直接使用git push origin master推送最新修改。

从远程库克隆(先创建远程库,再从远程库克隆至本地库)

(1)登陆github,创建一个新仓库gitskills。并勾选 Initialize this repository with a README

(2)使用git clone克隆一个本地库

git clone git@github.com:michaelliao/gitskills.git

git 从远程指定分支克隆代码至本地

git clone -b clone的分支名 远程仓库的地址

git 推送本地代码到远程指定分支

git push <远程主机名> <本地分支名>:<远程分支名>

git合并分支到Master主分支

切换到分支
git checkout branch_name

使用git pull把分支代码pull下来
git pull

切换到主分支
git checkout master

把分支的代码merge的主分支
git merge branch_name

git push推上去
git push


同样的方法把主分支文件合并到分支上。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值