一、git管理文件和代码的使用
Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。Git易于学习, 占地面积小,具有闪电般的快速性能。它具有Subversion,CVS,Perforce和ClearCase之类的SCM工具,具有廉价的本地分支,方便的暂存区域和 多个工作流等功能。--《Git官网》
依稀还记得当初写论文的时候,保存的论文文档是这样子的,代码文件夹是这样的。根据需求删除或修改一些东西后另存为另一个文件,过一段时间后,想找回被删除的文字/代码,但是不知道保存在哪个文件里去了,想保留最新的一个把其他都删除掉,又怕哪天会用上不敢删除,真的烦人,这个时候就轮到我们强大的Git出场了,顺便记录一下自己从廖雪峰的官方网站Git教程的学习。
二、我工作中常用的指令(一)
1、如果你没有项目的代码,组长一般都会给你一个链接,这时候你就可以用git命令git clone
下来
git clone https://github.com/CodingEmbedded/mygit.git
2、接到主管的需求(此刻的我是想拿我的ZFB收款码出来的),一般来说都是新建一个分支的去开发的
git check -b 分支名
3、此时就可以愉快地写bug了,有时候同事/主管问你改了什么问题,你改了挺多不记得可以先status
再diff
一下可以看到我们修改了那些文件增删了那些内容
git status git diff
4、写好之后就可以先git add
再git commit
进行本地代码的提交
git add git commit -m "message"
5、提交到远程仓库需要用push
git push
6、假如在你写的时候有人提交了代码,这时候你需要pull
最新的代码下来
git pull
如果没有冲突就可以提交代码(有冲突的话就按照Git提示做修改再提交)
7、你的代码有一个致命bug,并且已经提交到了远程仓库,版本回退的方法: 先用下面命令找到要回退的版本的commit_id:
git reflog
然后回退版本:
git reset --hard commit_id
最后强制推送到远程分支:
git push -f
可以看到图1是提交了一个记录为“add or del”,图2图3为回退版本操作,图4图5对比可以看出git已经回退了
图1
图2
图3
图4
图5
1、创建版本库
1、新建一个空目录(如下我是E
盘 –> code
目录下新建一个test
版本库)
2、通过git init
命令把这个目录变成Git可以管理的仓库
3、ls -ah
查看.git
>目录和./
>../
>,那是因为.git
这个目录默认是隐藏的。
2、添加文件到仓库
1、编写一个文件 text.txt
2、使用命令git add <file>
,可反复多次使用,添加多个文件,添加全部文件使用git add -A
3、使用命令git commit -m <message>
,完成,message
为提交的文本信息
3、查看工作状态和修改的文件
1、要随时掌握工作区的状态,使用git status
命令。
2、如果git status
告诉你有文件被修改过,用git diff
可以查看修改内容。
4、git的版本回退
1、版本回退前,用git log
可以查看提交历史,以便确定要回退到哪个版本。
2、HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间回退,使用命令git reset --hard commit_id
。
3、Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
。
4、要重返未来,用git reflog
查看命令历史,以便确定要回到未来的哪个版本。使用命令git reset --hard commit_id
。
5、暂存区
提交一个readme.txt的过程
6、管理修改
Git是如何跟踪修改的,每次修改,如果不用git add
到暂存区,那就不会加入到commit
中。
7、撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考四、git的版本回退一节(用git log查看命令历史,以便确定要回到未来的哪个版本。使用命令git reset --hard commit_id
),不过前提是没有推送到远程库。
8、删除文件
命令git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失*最近一次提交后你修改的内容*
。
git checkout -- <file>
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。