1.安装Git的步骤省略,安装完毕后,在终端输入$ git
,下方输出git的提示信息,则安装成功;
2.本地新建目录,cd 进入该目录,执行
$ git init
,则表示将该目录初始化为一个git版本仓库(repository)
(如果直接使用
$ git clone
命令复制远程仓库到本地,则不用初始化,默认复制的目录就是一个git仓库)
3.此时执行$ git branch
,可以查看该仓库的分支,默认只有一个master主分支;
4.Git与SVN的区别除了是分布式管理之外,Git还有工作区和暂存区(stage)的概念。
cd 进入仓库,$ls -a
命令查看仓库下所有文件,工作区就是正常repository中能看到的需要编辑的文件,除此之外,还有一个隐藏文件夹.git,它不属于工作区,而是Git的版本库。
.git中存放了很多东西,其中有一个index文件夹,这就是.git的暂存区; 另外还有一个HEAD指针文件,默认指向Git为我们自动创建的第一个分支master。
1、首先,在工作区可以添加、编辑、删除文件;
2、然后可以使用$ git add <filename>
命令将工作区的某个文件的修改添加到暂存区 ,可以多次add多个文件;也可以使用$ git add .
命令,一次将所有修改都添加到暂存区。
3、添加到暂存区之后,使用$ git commit -m "message"
命令,将添加到暂存区的修改提交到 当前分支;commit命令实际是把暂存区的所有内容提交到当前分支。
1、提交修改到当前分支后,可以使用$ git log命令显示从最近到最远的提交日志
2、或者使用$ git log --pretty=oneline
,显示简化信息后的提交日志(只显示commit ID 和commit message)
3、在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写成HEAD~100。如果想要舍弃本次修改,回退到上一个版本,可以使用$ git reset —hard HEAD^
命令;同理,想要回退到往上100个版本,可以使用$ git reset —hard HEAD~100
4、假如你回退了版本之后,又想要恢复到最新版本,可以使用$ git reflog
,查看你的每一次命令,找到想回退的版本号
5、然后使用$ git reset --hard <commit_id>
,来回退到你想要的版本上。
1、场景1:当你改乱了工作区某个文件的内容(还没有add到暂存区),想直接丢弃工作区的修改时,用命令git checkout -- file
2、场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时(已执行add操作),想丢弃修改,分两步,第一步用命令git reset HEAD <file>
把暂存区的修改撤销掉,重新放回工作区,就回到了场景1;第二步按场景1操作。
3、场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考上一节回退,不过前提是没有推送到远程库
1、先手动删除文件,然后使用$ git rm <filename>
(和git add file效果是一样的),然后再使用$ git commit -m "message"
命令提交删除的修改
2、另一种情况是工作区文件删错了,但是因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本,使用命令:$ git checkout -- file
1、每次使用commit命令提交,Git都把这些提交串成一条时间线,这条时间线就是一个分支,Git里有一个主分支master。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
2、使用$ git branch dev
命令创建一个dev分支。
3、git checkout dev
命令切换到dev分支(两条命令可合成为一条:git checkout -b dev
);
此时,切换到dev分支,表示HEAD指向了dev分支
4、可以使用 $ git branch
命令,查看当前仓库的所有分支
5、在master分支下执行 $ git merge dev
命令,表示合并dev分支到当前master分支(快速合并,其实就是直接把master指向dev的当前提交)
6、使用$ git branch -d dev
命令,可以删除dev分支
1、从master分支新建一个分支feature1并切换到该分支($ git checkout -b feature1
),假如在feature1分支上修改文件1并提交,又在master分支修改文件1并提交,此时分支情况如下:
2、再在master上执行$ git merge feature1
命令快速合并时,提示文件1存在冲突;当Git无法自动合并分支时,就必须首先解决冲突(解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交)。解决冲突后,合并完成,如下图。
3、用git log --graph
命令可以看到分支合并图
1、要强制禁用快速合并Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息,命令:git merge --no-ff -m "merge with no-ff" dev
--no-ff参数,表示禁用Fast forward
本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
1、当手头工作没有完成时,先把工作现场git stash
一下,然后新建分支去修复bug;修复后,切换回到原来的分支,可以用git stash list
查看stash的现场,再$ git stash pop
(顺便删除了保存的工作现场),回到工作现场;如果不想删除保存的工作现场,可以用$ git stash apply
命令。
1、开发一个新feature,最好新建一个feature分支;
2、Feature分支上已经有了修改,但是还没有merge,此时删除feature分支,会有提示
3、如果确定要丢弃一个已经commit但是还没有被合并过的分支,可以通过$ git branch -D feature
命令强行删除。
1、当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin
使用 git remote
、git remote -v
查看远程库的信息和详细信息
本文作者:李佳玮
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!