Git笔记

一、参考文档

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000

二、分布式的效果

每个人手上都有一个版本,当一个人的版本发生问题时,不会影响所有的版本;

三、学习笔记

1.安装,参考文档

2.建立版本库:

初始化一个仓库,使用 git init 命令,即在当前文件夹下创建一个 .git文件夹
添加一个文件到仓库:
git add , 将文件添加到暂存区,可多次使用
git commit -m “修改说明” 将暂存区的文件一次性打包到仓库

3.版本穿越

git status 查看当前仓库的状态(工作区和暂存器的差异——红色显示,暂存器和仓库分支的差异——绿色显示)
git diff 查看工作区和暂存区文件的差异

git log 显示最近的提交日志,可以查看提交commit id,以便确定要回退的版本
git log pretty=oneline (显示形式)

git reset –hard HEAD^ 从当前提交转到前一次提交
git reset –hard HEAD^^ 从当前提交转到前前一次提交
git reset –hard commit-id 从当前提交转到 commit-id的那次提交,即可以从过去的提交跳转到现在的提交,需要和git log配合;

git reflog 查看命令历史,以便确定回到未来的那个版本

4.管理修改

git每次管理的是对文件的修改,而不是对文件:
对文件修改了2次
第一次修改——>add——>第二次修改——>commit ,这样在仓库分支中存在的只是第一次的修改
正确做法是:
第一次修改——>add——>第二次修改——>add——>commit
注: git diff HEAD – 可以查看 当前仓库分支 和 当前工作区文件 的区别

5.撤销修改

场景一:修改了工作区的文件,但是还没有添加到暂存区,可以使用 git checkout – filename ,丢弃掉当前工作;
场景二:修改了工作区的文件,并且添加到了暂存区, 分为两步:
第一步: git reset HEAD file ,用仓库分支中的file覆盖暂存区的file;
第二步:git checkout – filename ,丢弃掉当前工作区的内容;
场景三: 修改了工作区的文件,并且提交到了仓库分支,要撤销,可以回退到当前本地仓库的前一次提交,但是提交到了远程仓库,那就死了;

6.删除文件

删除本地文件 rm ,文件在暂存区和本地仓库分支还是有的;
git checkout – ,可以将文件从暂存区恢复到工作区;
git rm 将文件从暂存区删除
git commit -m “说明” 将本地仓库分支中的文件删除

7.添加SSH认证和远程仓库同步

在本地创建SSH密钥,然后将公钥上传至远程仓库;

先有本地库,后有远程库,本地关联远程库
关联——远程仓库和本地仓库分支
git remote add origin git@server-name:path/repo-name.git
第一次 把本地分支推送到远程仓库master
git push -u origin master
以后提交,把本地内容推送至远程仓库master
git push origin master

先有远程库的情况:
在本地创建文件夹,使用
git clone [email protected]:path/repo-name.git即可

8.分支管理,建立在HEAD、MASTER、DEV这些指针的理解之上

查看有几个分支 git branch
创建一个新分支 git branch
切换分支 git checkout
创建+切换分支 git checkout -b
合并分支到当前分支 git merge (这个是快速合并,即 当前分支 和 分支 在一条线上)
注:即刚开始在mster分支上,然后新创建了一个dev分支,并切换到dev分支,修改了文件并提交到本地仓库,然后切换到master分支下,这中情况下,master分支和dev分支在一条线上
删除分支 git branch -d

9.合并冲突

即当前分支和《name》分支有相同的父节点,两个有分叉。
注:即刚开始在mster分支上,然后新创建了一个dev分支,并切换到dev分支,修改了文件并提交到本地仓库;然后切换到master分支下,在master分支下,修改了文件并进行了提交,这中情况下,master分支和dev分支有分叉口
这种情况下,先解决冲突,即在master分支下修改冲突文件,删除箭头等号,然后add commit文件就ok;
git log –graph 命苦可以查看分支合并图

10.修复bug

场景:当前有两个分支,一个master分支,一个dev分支,你在dev分支工作,刚刚修改了文件,但是不想提交,老大忽然让你去修复master分支上的一个bug,你的做法:
现在dev分支上:
git stach 将当前工作区保存起来。
(git stach list 可以查看stach区的保存列表;
git stach apply 将stach区头部的信息恢复到工作区;
git stach drop 将stach区头部信息删除;
git stach pop 将stach去头部信息恢复到工作区,并将stach区头部信息删除;)

切换到 master分支:
创建新分支 bug-001, 在bug-001分支下,进行文件修改,bug修复,修复完成commit后;
切换到master分支,使用快速合并,合并bug-001和master分支;
在master分支下,检查文件修改是否成功,然后删除bug-001分支;

切换到dev分支:
git stach pop 恢复到你在修复bug之前的所有工作。

11.开发新功能或新feature

开发新功能或新feature,要新建一个分支;防止后期不再需要该功能,删除该功能;
如果丢弃一个没有合并过的分支,使用下面命令强行删除
git branch -D

12.多人协作模式:

a.首先,可以试图用git push origin branch-name推送自己的修改;
b.如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并
c.如果合并有冲突,则解决冲突,并在本地提交;
d.没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
f. 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name

你可能感兴趣的:(git)