Git学习笔记

来源:互联网 发布:淘宝运营怎么学 编辑:程序博客网 时间:2024/05/27 20:28

推荐廖老师的Git学习网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
1,安装完git后还需要配置
$ git config --global user.name "Your Name"
‌ $ git config --global user.email "email@example.com"

2,创建仓库
mkdir git_responsitory_name
初始化 git init
创t建文件 vim filename
添加文件到库 git add filename
提交 git commit -m "message"
添加远程库 git remote add origin git@github.com:denglitong/db.git

3, 要随时掌握工作区的状态,使用git status命令。

4, 如果git status告诉你有文件被修改过,用git diff可以查看修改内容

5, HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

6, 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本

7, 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

8,6e62f014468229a9294aa774bd59057b7eaa948f..jpg
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支,一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的

9, 每次修改,如果不add到暂存区,那就不会加入到commit中

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

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

12, 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库

13, 修改test.txt->删除 rm test.txt->然后用git checkout,回退到修改前的test.txt

14, 修改test.txt->add和commit->然后用git rm test.txt-->git reset HEAD∧ (回退到删除之前的那个版本)->git chekcout -- test.txt(回退到test.txt上一次修改前的状态)

15,当修改(包括删除)一个文件并add commit push到远程后,想要恢复回上一个版本,git reset version_id
(通过git log来查看),然后git add --all
git push commit master,这时候会因为当前版本低于主版本而在push到远程的时候会被拒绝并提示,
这时候改用命令git push -u origin master -f就可以,应该是强行更新当前版本到删除前的版本
$ git push -u joe prod-2295-1 -f

15, 要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

16, Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支 git merge name
删除分支:git branch -d name

17,合并两个分支时,如果同一个文件有修改但不在同一个修改处冲突,则可以自动合并,合并后的文件会保留修改信息,
如想去掉需手动处理
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
(Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容)
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成
用git log --graph命令可以看到分支合并图

18,git merge默认使用Fast Forword方式合并,合并时像这样子
4d5cbbe8af382d713ee7bc4427c746dab5708343..jpg
在这种模式下merge后删除分支后就会丢失分支信息,
而在git merge时指定不使用Fast Forword后是这样子git merge --no-ff
8b4ea59b6b2b9f437cb216139bb1b82a5211bbbc..jpg
在这种模式下不会丢失分支信息

19, 在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,
再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
90cd89c266dd4173859cd19dd30bfba495023981..jpg
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,
而fast forward合并就看不出来曾经做过合并。
git push -u branchName 推送分支到远程


git‌多分支开发

  1. 建立分支后在分支commit然后切换到主分区,git push origin dev提交dev分区到远程,然后拉取的时候git branch查看分区,虽然没有看到dev分区但是git checkout dev的时候会从远程拉取dev分区到本地,从而可以实现多分支开发
  2. 修复bug
    我们会通过创建新的bug分支进行修复,然后合并,最后删除;
    当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
    保险的做法是先把master分支merge到dev分支,如果有冲突,先在dev分支上解决冲突,然后再把dev分支merge到master,就肯定成功。
0 0
原创粉丝点击