廖雪峰Git教程学习总结

1.安装git

$ sudo apt-get install git

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"   --global参数表示这台机器上所有的git仓库都会使用这个配置

2.创建版本库repository(一个使用git进行管理的目录)

$ mkdir learngit & cd learngit

$ git init    (使用ls -ah查看隐藏文件.git)

3.添加文件到仓库

$ git add <file>

$ git commit -m <message>

4.查看仓库当前的状态

$ git status   如果git status告诉你文件被修改过,可以查看具体的修改内容  $ git diff,只能在修改文件这一步后查看

第一次添的加文件且没有进行提交过:untracked files(并且用git diff查看不到)

修改完文件:no changes added to commit (use "git add" and/or "git commit -a")

执行完add:Changes to be committed

执行完commit:nothing to commit, working directory clean

5.查看最近到最远的提交日志

$ git log --pretty=oneline    其中一大串的数字是git的版本号(commit id)

6.版本回退

HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上个版本,HEAD~100表示往上100个版本

$ git reset --hard HEAD^    退回上一个版本     $ cat readme.txt查看文件内容   $ echo 'ABC'>>readme.txt新建简单的文本

$ git reset --hard 1094a      回到未来的commit id为1094a的版本

$ git reflog      记录每一次的命令(如果想回到未来的版本但是找不到版本号);重回过去,用 $ git log查看提交历史,确定要回退到哪个版本,重返未来,用$ git reflog查看历史命令,确定要回到未来的版本

Git的版本回退速度很快,是因为Git内部有个指向当前版本的HEAD指针,当回退版本的时候,Git仅仅把HEAD指向回退的版本

7.工作区(working directory):learngit文件夹       版本库(repository):.git目录

Git的版本库里最重要的是称为stage(index)的暂存区,还有Git自动为我们创建的第一个分支master,以及指向master的指针HEAD

暂存区与版本库的区别:第一次修改 -> git add -> 第二次修改 -> git commit。当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交

8.查看工作区和版本库里最新版本的区别

$ git diff HEAD -- readme.txt

9.git checkout命令

命令$ git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:一种是readme.txt修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。总之,就是让这个文件回到最近一次git commit或git add时的状态

10.git reset命令

命令$ git reset HEAD readme.txt可以把暂存区的修改撤销掉,重新放回工作区,再用$ git checkout -- readme.txt命令丢弃工作区的修改

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作

11.从版本库中删除该文件rm XXX

删对了,那就用命令git rm删掉,并且使用git commit;删错了,可以很轻松地把误删的文件恢复到最新版本:$ git checkout -- test.txt,但是如果执行git rm XXX删除文件用checkout就找不回了

12.添加远程仓库     

(1)创建ssh key,cd到用户主目录的.ssh文件夹下,查看有没有id_rsa(私钥)和id_rsa.pub(公钥),有的话直接跳过,没有的话$ ssh-keygen -t rsa -C "email address",然后一路使用默认值

(2)在github的ssh key选项中添加id_rsa.pub中的内容

(3)在github上面创建repository(创建一个新的git仓库)

(4)在本地关联仓库中输入git remote add origin https://github.com/YINTANGNI/learngit.git用来关联远程库,远程库的名字就叫origin。关联后,使用命令git push -u origin master第一次推送master分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

13.克隆远程库

$ git clone https://github.com/YINTANGNI/learngit3.git

14.git创建分支

HEAD指向当前分支,master指向最新提交的分支

$ git checkout -b dev      创建并转换分支(相当于创建分支$ git branch dev & 切换分支$ git checkout dev),接下来在分支上进行操作后使用$git add & $ git commit提交给分支

$ git branch      查看当前分支

$ git checkout master      返回master分支

$ git merge dev      将dev分支的工作合并到master上(Fast-forward)

$ git branch -d dev      删除dev分支

$ git branch -D <name>      强力删除没有合并的branch

冲突解决:在分支上修改文件并执行git add和git commit后,切换到master,在master上修改文件并执行git add和git commit后,执行merge时会发生冲突。在master分支中使用git status查看冲突的文件,查看并修改冲突的文件后,重新使用git add和git commit提交,最后删除刚才操作的分支

命令$ git log --graph --pretty=oneline --abbrev-commit查看分支的合并情况

$ git merge --no-ff -m "merge with no-ff" dev      不使用fast forward模式合并,保留分支的信息。使用ff模式只会显示最终的修改结果,不保留分支信息

15.分支管理原则

master只发布稳定的新版本,在dev上面干活,每个人拥有自己的分支,不断地向dev分支上合并就可以了。添加新功能时,不希望实验性质的代码搞乱主分支,因此添加的新功能最好在feature分支上开发、合并,最后删除feature分支。

16.BUG分支

修复bug可以通过新建临时分支(issue-number),修复后合并分支,然后删除临时分支

如果是未曾提交过的文件,需要通过命令$ git add XXX将未保存的文件提交到暂存区,让git能够追踪这个文件

$ git stash      将工作现场出藏起来等恢复现场后继续工作(当前在dev分支)

$ git checkout master      切换回master

$ git checkout -b issue-101

修复完bug后通过命令$ git add & $ git commit命令提交,然后切换回master分支,通过命令 $ git merge --no-ff -m 'merged bug fix 101' issue-101,最后删除分支

$ git checkout dev 切换回dev分支

$ git stash list      查看刚才的工作现场

方法一:$ git stash apply      恢复后不删除stash内容,需要用$ git stash drop来删除

方法二:$ git stash pop      恢复的同时删除了stash内容

可以多次使用stash,然后用list查看后,通过命令 $ git stash apply stash@{0}进行恢复

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值