时光飞逝,机会就在我们眼前,学会把握机遇。

Git学习笔记

  •  小涛
  •   Git
  •  2019-07-04
  •  339 人已阅读


一、什么是Git?

Git是一套程序源代码的分布式版本管理系统,最初用于管理Linux核心代码的开发,后来被多个开源工程采用;现在已经成为互联网协作开发的标准的源代码管理软件。

官网:https://git-scm.com/

在线体验: https://try.github.io

二、理解版本管理的流程

代码开发流程

  • 系统开发,编写代码

  • 提交代码给Git本地库

  • 将代码提交到Git远程库,分享给团队其他人

  • 从远程库中获取最新代码

  • 继续修改编写代码

  • 重复第二步及以后的操作

Git基础概念

  • 本地工作文件夹

  • Git索引库(Stage)

  • Git库(Repository)

    • local:本地库

    • remote:远程库(服务器端)

三、Git初始设定

建立一个Git库

$ git init

设定基础信息

$ git init      # 初始化git本地环境
$ git config -l # 查看全局配置
$ git config --global user.name "tengxt"
$ git config --global user.email "tengxt@tengxt.com"
$ git config --global color.ui true # 配置字体颜色
$ git config -l

帮助命令

$ git config --help
$ git help config

四、第一次提交

知识点

  • 建立文件(本地工作文件夹)

  • 追加文件(索引区)

  • 提交文件(本地库)

实战

$ mkdir myweb
$ cd myweb #建立本地Git库
$ git init #编辑(修改)本地文件
$ nano index.htm
...
...
$ git status #本地工作文件夹状态确认
$ git add index.htm
$ git status #本地工作文件夹状态再次确认
$ git commit -m "created index.htm" #将索引区内容提交本地库
$ git log #查看提交历史

五、查看提交履历

git log 命令的使用

$ git log
$ nano index.htm
...
...
$ git add index.htm
$ git commit -m "added code."
$ git log
$ git log --oneline # 日志缩略展示
$ git log -p # 日志详情(能查看到具体代码)
$ git log --stat # 日志详情
$ git log --help

六、Git状态

知识点

  • git status

  • git checkout -- [file]

实战

$ nano index.htm
...
...
$ git status # 查看文件状态
$ git checkout -- index.htm # 回退到上一次修改的位置(本地工作区)
$ git status
$ nano index.htm
...
...
$ git add .
$ git reset HEAD index.htm # 从(索引区)中迁出
$ git checkout -- index.htm # 回退到上一次修改的位置(本地工作区)
$ git status

七、比较修改内容

知识点

  • git diff [--cached]

实战

$ nano index.htm
...
...
$ git diff #工作文件夹比较
$ git add index.htm #把修改文件追加到索引区
$ git diff #无法比较索引区的文件
$ git diff --cached #索引区比较

八、Git文件操作

知识点

  • git add [file1 file2 ...]

  • git add .

  • git rm

  • git mv

实战

$ nano index.htm
...
$ nano style.css
...
$ git add . # 把文件区所有文件提交到索引区
$ git status
$ git mv index.htm index.html # 把index.htm 重命名为 index.html
$ git status
$ git rm --cached style.css # 把style.css 文件从索引区移除
$ git status

九、Git忽略管理

设置Git忽略的文件,这些文件不参与Git库的提交和管理。(例如:Node.js的[node_modules]文件夹)

知识点

  • .gitignore

参考地址:https://git-scm.com/docs/gitignore

实战

$ nano test.tmp
...
$ git status
$ nano .gitignore # 创建.gitignore文件
...
*.tmp # 在.gitignore文件里添加内容
...
$ git status
$ mkdir subdir
$ nano subdir/my.css
...
$ git status
$ nano subdir/my.tmp
...
$ git status

十、回退1

知识点

  • git reset --hard HEAD

  • git reset --hard HEAD~

  • git reset --hard HEAD~n

$ git status
$ nano main.html
...
#建立多个提交履历(5个以上)
...
$ git add .
$ git commit -m "1...5"
$ git status
$ git add .
$ git log
$ git reset --hard HEAD # 回退到当前节点
$ git log
$ git reset --hard HEAD~ # 回退到上个节点
$ git log
$ git reset --hard HEAD~2 # 回退到第2个节点

十一、回退2

知识点

  • git reflog [-n num]

  • git reset --hard [commit_id]

实战

返回过去之后,通过git reflog命令找到现在的位置(commit_id),再从过去返回回来。

$ git log
$ git reset --hard HEAD~2 # 回退到第2个节点
$ git reflog # 显示所有的提交日志
$ git reset --hard [commit-id] # 回退到某个节点位置

十二、使用分支

Git分支功能对于项目开发中的团队合作有着非常重要的作用,同时对于生产环境的更新管理也起着不可替代的作用,是Git最重要的功能。

在项目开始前,应该首先对Git分支的管理有一个明确地规划,明确每个分支的功能和担当者,这样才会保证项目正常推进,不至于陷入混乱。

知识点

  • git branch [name]

  • git checkout branch_name

实战

$ git branch        # 查看所有分支
$ git branch dev # 建立dev分支
$ git checkout dev # 切换到dev分支
$ nano style.css
...
$ git add . # 在dev分支上提交文件
$ git commit -m "modified style.css"
$ git log
$ git checkout master
$ git log # 切换到master分支后,索引库未同步??

十三、合并分支

知识点

  • git merge

  • git branch -d [name]

实战

$ git branch
$ git checkout dev
$ nano index.htm
...
$ git add .
$ git commit -m "modified1"
$ git log
$ git branch
$ git checkout master # 切换到master主分支
$ git log
$ git branch
$ git merge dev # 把dev开发分支的源代码同步到master主分支
$ git log
$ git branch -d dev # 删除dev分支
$ git branch

十四、制造分支冲突

当团队中多人同时编辑一个文件的时候,难免会出现源代码的编辑合并冲突的问题,那么我们该怎么解决呢?

知识点

  • 做一个源代码冲突的场景

  • git checkout -b [branch_name]

实战

$ git checkout -b dev   # 切换并创建dev开发分支
$ nano index.htm
...
$ git add .
$ git commit -m "modified by dev."
$ git checkout master # 切换到master主分支
$ nano index.htm
...
$ git add .
$ git commit -m "modified by master."
$ git branch
$ git merge dev # 把dev开发分支的源代码同步到master主分支
#出现源代码版本冲突,需要手动进行合并解决.
Auto-merging index.htm
CONFLICT (content): Merge conflict in index.htm
Automatic merge failed; fix conflicts and then commit the result.

十五、解决分支冲突

知识点

  • git merge [branch_name]

实战

$ git branch
$ git checkout master
$ git merge dev
$ nano index.htm
...
$ git add index.htm
$ git commit -m "merged by leader."
$ git log
$ git branch

十六、使用Tag标签

知识点

  • 系统版本号管理

  • git tag (tag_name)(commit_id)

  • git show (tag_name)

  • git tag -d (tag_name)

系统版本号管理

任何软件系统,应用程序在发布时都应该给一个版本号,来管理每次发布的内容,便于今后的管理。

例如:1.1.4

NNN.abc.xxx

  • NNN:大版本号

  • abc:每次做出的小更新时,发布的版本号

  • xxx:每次bug修正时发布的版本号

实战

$ git tag
$ git tag v1.0.0
$ git tag
$ nano index.htm
...
#修正bug1
...
$ git add .
$ git commit -m "fixed bug1."
$ git tag v1.0.1
$ git tag
$ nano index.htm
...
#修正bug2
...
$ git add .
$ git commit -m "fixed bug2."
$ git tag v1.0.2
$ git tag
$ nano index.htm
...
#新功能追加
...
$ git add .
$ git commit -m "added feature1."
$ git tag v1.1.0
$ git tag
$ git show v1.0.1
$ git show v1.0.2

十七、使用别名

在Git中可以将经常使用的命令以别名缩写的方式简化使用。

知识点

  • git config --global alias.(name)(command_name)

实战

#将checkout命令简化为co
$ git config --global alias.co checkout
#将branch命令简化为br
$ git config --global alias.br branch
#将commit命令简化为cm
$ git config --global alias.cm commit
#将status命令简化为st
$ git config --global alias.st status
$ git br
$ git co dev
$ git st
$ git config -l

当然这种别名的定义根据每个人的使用习惯不同而不同,也可以在项目开始前作为项目的统一规则制定下来,使每个项目开发成员都统一使用一套大家都认可的别名,这样提高项目组内部的沟通效率。

十八、玩转GitHub

如何使用Git命令连接远程服务器,如果编写提交代码到服务器端,完成团队的协同开发。

知识点

  • git clone [url]

  • git remote -v

  • git push (origin)(master)

操作步骤

  1. git clone 把远程库克隆到本地文件夹

  2. 编辑本地文件夹的文件

  3. 提交编辑的文件到本地信息库(git add . / git commit)

  4. 将本地库同步(sync)到远程Git服务器

实战

$ git clone https://github.com/xxx/Gitxxx   # 克隆远程仓库到本地文件
$ cd Gitxxx
$ git status
$ git branch
$ git branch -a
$ git branch dev remotes/origin/dev
$ git branch
$ git checkout dev # 切换到dev开发分支
$ git status
$ nano README.md
...
git config --global color.ui true
...
$ git add .
$ git commit -m "为初期设定增加color.ui选项"
$ git status
$ git remote -v
$ git push origin dev
  很赞哦!(0)
关闭

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

 发表评论  请文明留言
0 条评论

 还没有评论,来说两句吧...