Git

前言:平时工作中的代码管理用到了Git,所以就总结下Git;

推荐一篇写的很好的关于Git的教程,简单易懂:Git教程

 

1.把文件添加到版本库

git add readme.txt
git add file2.txt file3.txt
git commit -m "wrote a readme file"

git add是将修改从工作区提交到暂存区,git commit是将修改从暂存区提交到版本库;

 

2.了解版本库当前的状态

$ git status

 

3.查看修改内容

git diff readme.txt

显示的是,工作区的内容与暂存区或者版本库的区别;

还可以这样写:

$ git diff HEAD -- readme.txt

查看工作区和版本库里面最新版本的区别,其中HEAD可以替换成commit id,那就表示查看当前工作区和指定版本库里面版本的区别;

 

4.回退到相应版本

(1)找到commit id:

①查看命令历史,哪怕关机后再开机也是还会有的:

git reflog

②查看commit的历史记录,以便确定要回退到哪个版本:

$ git log

或者(可以减少log输出):

$ git log --pretty=oneline

(2)回退版本

$ git reset --hard HEAD^

HEAD表示当前版本,也可以将它替换成commit id,如1094adb...,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

 

5.撤销修改

(1)撤销工作区的修改

①还没有进行git add,暂存区没有内容,撤销工作区的修改,使其跟版本库一致;

$ git checkout -- readme.txt

②已经执行了git add,暂存区中有了内容,但是没有撤销工作执行git commit,撤销工作区的修改,使其跟暂存区一致;

$ git checkout -- readme.txt

注意git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令;

总之,就是让这个文件回到最近一次git commitgit add时的状态。

(2)撤销暂存区的修改

已经执行了git add将修改提交到了暂存区,但是发现这次提交有问题,需要撤销暂存区的修改:

①先将暂存区的修改回退到工作区;

$ git reset HEAD readme.txt

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

②再将工作区的修改撤销;

$ git checkout -- readme.txt

(3)撤销版本库的修改

假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?

参考版本回退一节吗,可以回退到上一个版本;

 

6.删除文件

(1)先将工作区中文件删除:

$ rm test.txt

(2)查看哪些文件被删除了:

$ git status

(3)现在有两个选择,一种情况是确实要从版本库中删除该文件,另一种情况是删错了,需要恢复文件:

①删除

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

现在,文件就从版本库中被删除了。

注意:先手动删除文件,然后使用git rm <file>和git add<file>效果是一样的。

②恢复

$ git checkout -- test.txt

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

但是只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容;

 

7.创建与合并分支

(1)创建dev分支:

$ git branch dev

(2)切换到dev分支:

$ git checkout dev

(1)和(2)也可以合并写成:

$ git checkout -b dev

git checkout命令加上-b参数表示创建并切换;

(3)查看当前分支:

$ git branch

git branch命令会列出所有分支,当前分支前面会标一个*号;

(4)dev分支开切换回master分支:

dev分支上的开发结束后,需要切换回master分支:

$ git checkout master

(5)dev分支的工作成果合并到master分支上:

$ git merge dev

git merge命令用于合并指定分支到当前分支;

(6)删除dev分支:

合并完成后,就可以放心地删除dev分支了:

$ git branch -d dev

(7)查看branch:

$ git branch

此时只剩下master分支;

 

8.解决冲突

虽然冲突有很多种,如git pull冲突,git merge冲突,git pull冲突的本质还是git merge冲突,因为拉取代码的时候,需要将本地代码与服务器代码进行合并,但是本地和服务器修改了同一处的代码,所以会出现冲突;

看下git merge冲突的解决:

merge冲突就是我们在两个分支的同一个文件上修改了内容,当我们要合并分支的时候,出现了冲突,如:

$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交;

解决方案:

(1)查看冲突的文件

$ git status

(2)找到冲突文件是readme.txt,查看readme.txt的内容:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

Git用<<<<<<<=======>>>>>>>标记出不同分支的内容;

(3)手动解决冲突,修改readme.txt如下后保存:

Creating a new branch is quick and simple.

(4)再次提交:

$ git add readme.txt 
$ git commit -m "conflict fixed"
[master cf810e4] conflict fixed

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

renshuguo123723

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值