GIT 分布式版本控制系统
可以实现,实时的记录版本库的修改信息!
注意: 所有的版本控制系统,其实只能跟踪文本文件的改动,而图片、视频这些二进制文件,
虽然也能有版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件的每次改动
串起来,也就是只知道图片从100kb改成了120kb但到底改了些什么,版本控制没法知道。
暂存区 就是执行 git add 之后修改操作存放的区域
工作区 就是文件编辑区,譬如 readme.txt!
- 文件夹中的 .git 目录其实就是用来跟踪管理版本库的,如果看不到,可能是因为该目录是被隐藏的,使用 ls -ah 命令就可以看到!
git的基本操作
git init
- 用来初始化一个GIT仓库(注意在想要将其变为仓库的目录下执行这个语句)
git add xxx
- 用来将文件添加到仓库
git commit -m “wrote a readme file”
- 将文件提交到仓库;其中 -m 后面输入的是本次提交的说明,这样方便从历史记录里找到改动记录。
- 注意:commit命令是可以一次性提交多个文件的,即commit一次是将上面 add 之后未 commit 的全部文件提交上去!
- 将文件提交到仓库;其中 -m 后面输入的是本次提交的说明,这样方便从历史记录里找到改动记录。
git status
- 用来让我们掌握仓库当前的状态,其中的信息包含是否修改以及提交修改
git diff xxx
- 用来查看修改的内容(xxx是分支名,而不是某个具体的文件名!)
git log(git log –pretty=oneline)
- 显示从最近到最远的提交日志,就是将所有提交的修改都显示出来。其中的一大串数字是相对应版本的 commit id!(只显示当前分支的提交信息!)
git reset –hard HEAD^
- 将相关文件回到上一个版本!
- 其中, HEAD 代表着当前版本 HEAD^ 代表上一个版本 HEAD^^ 代表上上个版本 hard 后面还可以写 具体的 commit id ,这样就能回溯到具体的那个版本!
- 将相关文件回到上一个版本!
git reflog
- 显示出每一次操作的记录
git reset HEAD
- 将暂存区的修改撤销! 即如果有一个文件,修改了内容并且执行了 git add 命令,那么想要撤销修改就得先执行 该指令先撤销暂存区内容 再执行 git checkout – file_name 来撤销文件工作区的修改!
git checkout – file_name
- 撤销对应文件工作区的修改!
git rm file_name
- 删除相关文件
git push -u origin master
- 第一次将本地库推送到远程库
git push origin master
- 提交本地库到远程库
git clone
- 从远程库克隆一个本地库
repo sync
- 同步所有仓库的更新,修改代码之前都要将仓库中的代码进行更新操作!
git push origin trunk:trunk
- origin是本地仓库,第一个trunk是第二个trunk在本地的映射,可实现本地仓库合并到远程仓库的目的。
- 但有时会出现冲突,产生冲突的本质原因就是因为本地代码不是最新的导致的,那么解决方案是:先将我们修改后的文件备份,然后将本地代码还原到未修改之前的版本,然后从远程端下载最新的代码,接着把修改项整合到最新的代码里,最后再进行上传。具体相关操作如下(在执行下述操作的时候是保证修改已经commit过的!):
- git reset HEAD^^^ –hard —回溯到上三个版本
- git pull origin trunk —更新代码到最新
- git cherry-pick —合并刚刚进行的修改
- git push origin trunk:trunk —上传代码到远程仓库!
- 但有时会出现冲突,产生冲突的本质原因就是因为本地代码不是最新的导致的,那么解决方案是:先将我们修改后的文件备份,然后将本地代码还原到未修改之前的版本,然后从远程端下载最新的代码,接着把修改项整合到最新的代码里,最后再进行上传。具体相关操作如下(在执行下述操作的时候是保证修改已经commit过的!):
- origin是本地仓库,第一个trunk是第二个trunk在本地的映射,可实现本地仓库合并到远程仓库的目的。
git branch
- 查看当前仓库里的所有分支
git branch
- 创建名为name的分支
git checkout
- 切换到name分支工作
git branch -d
- 删除某个不用的分支
git merge <子分支名>
- 将相应名字的子分支和主分支master合并!
git ls-files –stage
- 查看暂存区的内容
git cat-file -p commit_id
- 看到对应id的文件内容!