在任何盘符下创建本地仓库repository(除git目录下)
在项目目录创建新的本地仓库,并把项目里的所有文件全部添加、提交到本地仓库中去:
$ git init #在当前的目录下创建一个新的空的本地仓库
Initialized empty Git repository in /home/user/test_proj/.git/
$ git add . #把前目录下的所有文件全部添加到暂存区
$ git commit -m 'project init' #创建提交,并添加备注
[master (root-commit) b36a785] project init
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 readme.txt
1.1 本地操作
1.1.1 git status
1.1.2 git add
使用命令 git add a.txt添加到暂存区里面去
1.1.3 git commit
用命令 git commit告诉Git,把文件提交到仓库
1.1.4 忽略文件
在工作区中创建一个隐藏文件.gitignore,将要被git忽略的文件名写入到该文件,然后将.gitignore提交到版本库即可。
1.1.5 查看区别
(1) 比较工作区与暂存区git diff
(2) 比较暂存区与本地库git diff --cached
1.1.6 撤销修改
(1) 仅在工作区中修改git checkout --
若一个文件内容仅仅在工作区中被修改,还未做add,则可通过该命令将修改内容撤销。
(2) 已在暂存区修改git reset HEAD
若一个文件修改后内容已经被add到了暂存区,则可通过该命令将暂存区中的修改撤销。
1.2 回退到之前版本
1.2.1 查看历史版本git log
(1) 基本命令
(2) git log --pretty=oneline
以一行形式显示提交及日志,但commit-id为长格式。
(3) git log --pretty=oneline --abbrev-commit
commit-id以短格式显示。
下图是以图表风格出现:更加直观的看出修改的日志记录!
(4) 翻页与退出
l 回车:一次显示一行
l 空格:翻页
l q键:退出命令
1.2.2 HEAD指针
HEAD:指向当前版本。
HEAD^:指向当前版本的前一个版本。
HEAD^^:指向当前版本的第前两个版本。
HEAD^^^:指向当前版本的第前三个版本。
……
HEAD^~20:指向当前版本的第前20个版本。
1.2.3 查看可引用历史版本gitreflog
1.2.4 版本回退
当提交到分支区后文件,是没有办法不被记录修改的,但是也可以根据git log 查看 ID重新回到没有修改的版本中,称“回退版本”操作,但是就算回退到以前的版本 ,分支区也有一些记录。
(1) git reset --soft(软回退)
分支区内容回退,但暂存区与工作区内容没有回退。
(2) git reset --mixed(混合回退)
分支区与暂存区内容回退,但工作区内容没有回退。
--mixed为默认选项,即可以省略。
(3) git reset --hard(硬回退)
分支区、暂存区与工作区内容全部回退。
1.1 删除文件
1.1.1 搭建环境
1.1.2 查看暂存区文件列表gitls-files
仅查看暂存区文件列表。
1.1.3 查看”暂与本”文件列表总和git ls-files--with-tree=HEAD
查看的是暂存区与分支区文件列表总和,而非仅仅是分支区文件列表。
1.1.4 仅删除暂存区中指定文件gitrm --cached
1.1.5 恢复被删文件git resetHEAD <file>
1.1.6 完全删除git rm
删除了工作区与暂存区中的指定文件,但分支区中的文件没有删除。
1.1.7 恢复被删文件
1.2 分支管理
1.2.1 Git分支理论
(1) Git主干
(2) Git分支
在Dev创建的分支,master分支不可以查收到文件,不同的分支,不同的修改,则看不到master下的文件;当然如果两者只有一个分支,当创建另一个分支的时候,那么创建的另一个分支会根据之前建立的分支的信息为前提,它也能看到之前分支创建的信息。
(3) 分支合并
想要Dev和master合并,必须在master分支下合并,才能合并Dev和master,然后想要继续接下来的工作,必须删除Dev分支,因为合并后的Dev分支已经落后了。
如果在Dev分支下合并,只能合并debug分支和Dev分支。
(4) 合并后的删除
1.2.2 分支基本操作
(1) 创建并切换分支git checkout -b <branch>
git chechout –bdev 相当于以下两个命令的组合:
git branchdev // 创建dev分支
git checkoutdev // 切换到dev分支
(2) 查看系统分支git branch
(3) 切换分支git checkout <branch>
(4) 删除分支git branch –d <branch>
git branch -d:一般情况下,删除某一分支文件前,必须先要合并,然后再master分支下删除
git branch -D:这是强制性删除;
(5) 合并分支git merge <branch>
在Dev分支下创建的文件,在提交之前,master分支不可以查收到文件;
想要合并必须在master分支下,才能合并dev和master; 如果在deve分支下,合并智能合并debug和Dev分支;
1.2.3 分支合并与冲突
(1)产生冲突的合并
git的冲突单元是文件,即只要多个分支对同一文件进行修改,无论修改的是什么内容,在合并时肯定会发生冲突;
(2)无冲突的合并
只要修改的不是同一个文件,肯定不会发生冲突;