git指南

Posted 一锅煮不下

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git指南相关的知识,希望对你有一定的参考价值。

烦人的git

首先我们下载一个git

https://git-scm.com/到这里下

首先我们要知道什么是版本

版本就好比,我们画一个小人,当我们画好第一个版本的时候,我们进行了一次保存,

我们给他发送给我们的老板,第一次发过去后我们老板说不好看,在加上一朵花会好看一些

这是我们就会保存原来的版本

起名叫(画小人第一版)

当我们画好了一朵花 给老板时候,老板说在手里在放个苹果吧,这时我们需要保存

(画小人在加朵花)

然后画好了苹果再发给老板,老板说都不要了,给小人上加一个帽子吧

然后我们又画了一个帽子,你会发现好多代码啊

好多重复的啊这可如何是好啊,如果我们后期在弄出个别的怎么办啊。

这就是我说的版本,和版本的问题

多而杂,乱

 

git我们可以理解为一个版本的管理工具

首先我们进行一个创建

进入一个我们想要做git的文件夹内,

 git init 

这个文件夹下会多一个隐藏文件.git

今日内容概要:

1. Django内容补充

- FBV&CBV

- 中间件

2. Git使用

- 什么是GIT,

- 张开的故事:资源共享网站

- 小弟弟系列

- 小芳系列

 

- 第一个版本:进入程序目录:

git init           初始化

git add .          当前目录中所有文件添加到【某个地方】

git commit -m ‘描述信息‘ 第一版本git已经生成

 

git status

 

- 新功能: 李浩专区

 

开发到了一半,紧急修复线上BUG

 

git stash

 

解决bug

git add .

git commit -m ‘修复bug完毕‘

 

 

                     git stash pop

可能出现冲突,出现之后不要着急,手动解决冲突

Auto-merging templates/index.html

CONFLICT (content): Merge conflict in templates/index.html

 

开发功能完毕

 

                     git add .

git commit -m ‘解决冲突后,继续开发后续功能‘

 

 

                     PS:

git stash           将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态

git stash pop       将第一个记录从“某个地方”重新拿到工作区(可能有冲突)

git stash list      查看“某个地方”存储的所有记录

git stash clear     清空“某个地方”

                            git stash apply     编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)

git stash drop      编号,删除指定编号的记录

 

 

- 疑问:

                     git log

git reset --hard  3ee80517425148b9d87591c9bd29a77e3db89ff2

git reflog

 

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan

$ git init 第一次创建.git文件夹

Initialized empty Git repository in C:/Users/wang/PycharmProjects/teacheryuan/BlogYuan/.git/

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ git status 查看git的版本

On branch master

 

Initial commit

 

Untracked files:

  (use "git add <file>..." to include in what will be committed)

        .idea/

        BlogYuan/

        blog/

        db.sqlite3

        egon.jpg

        manage.py

        templates/

 

nothing added to commit but untracked files present (use "git add" to track)

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ git add . 将代码保存到git文件夹下临时保存

 

The file will have its original line endings in your working directory.

warning: LF will be replaced by CRLF in blog/static/kindeditor-4.1.10/kindeditor-min.js.

The file will have its original line endings in your working directory.

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ git commit -m ‘第一次提交‘   将临时保存的文件加上描述信息正式保存到版本库里

[master (root-commit) 8aa00d8] 第一次提交

 345 files changed, 78179 insertions(+)

 create mode 100644 .idea/BlogYuan.iml

 create mode 100644 .idea/dataSources.ids

 create mode 100644 .idea/dataSources.local.xml

 create mode 100644 blog/static/kindeditor-4.1.10/examples/qqstyle.html

 create mode 100644 templates/reg.html

 create mode 100644 templates/showContent.html

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ ls 查看当前文件文件夹

blog/  BlogYuan/  db.sqlite3  egon.jpg  manage.py*  templates/

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ git status

On branch master

nothing to commit, working tree clean

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ git log 查看保存过的版本和保存描述信息

commit 8aa00d8207656e8ee8abd3c36804a6d6d889781c  唯一的版本号

Author: wang935415150 <[email protected]>

Date:   Mon Sep 18 14:38:32 2017 +0800

 

    第一次提交

 

 

我们修改了一些文件的代码后

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ git status 再次查看

On branch master

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

 

        modified:   manage.py    自动检测到修改的文件并且为红色

 

no changes added to commit (use "git add" and/or "git commit -a")

 

$ git add * 将manage.py更新到临时库中 *代表全部更新 加上文件名字代表只更新哪一个文件

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ git commit -m "加了个time模块" 降临时更新到库中

[master 78cd09d] 加了个time模块

 1 file changed, 1 insertion(+)

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ git status

On branch master

nothing to commit, working tree clean

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ git log

commit 78cd09dce1f838b30302d1b74cbfd02d70a3f7fb

Author: wang935415150 <[email protected]>

Date:   Mon Sep 18 15:24:20 2017 +0800

 

    加了个time模块

 

commit 8aa00d8207656e8ee8abd3c36804a6d6d889781c

Author: wang935415150 <[email protected]>

Date:   Mon Sep 18 14:38:32 2017 +0800

 

    第一次提交

 

[email protected] MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)

$ git reset --hard 8aa00d8207656e8ee8abd3c36804a6d6d889781c  版本回滚到想要的版本中 后面的一长串代表唯一版本号

HEAD is now at 8aa00d8 第一次提交

 

代码开发了一半,上线功能有bug的时候

开发一半的代码我们要做一个暂存

git stash 进行暂存

git stash pop 我的bug改完了也提交分支了,然后我们在取回来

会做一个新的合并

 

如果修改了一个地方不能自动合并因为有可能修改一个地方出现冲突

 

提示你templates/index下进行修复

 

我们有1,2,3,4版本

如果我们直接回到2版本

那么我们3和4就找不到了

这则么办呢

git reflog就可以查看到3和4和所有的版本

 

我们

这时候我们就可以回到想要的版本

git reset --hard 版本号

 

进阶版本

 

1. Git

 

工作区                           版本库                         远程仓库

 

 

未修改 已修改【红色】         暂存【绿色】  分支

         

上节回顾Git:【master】

git status

                

git add 文件名

git add .

                

git commit -m ‘xxxxx‘

                

git log

git reflog

                

git reset --hard xxxxdfasdf

 

 

 

                 git stash

git stash pop

 

分支:

 

提交master分支已经修改的问题,或者回到原始状态

 

git branch dev

git checkout dev

 

Dev

# 开发一半...

                            # git branch

 

git add .

git commit -m ‘xasdf‘

 

# 继续开发

 

git add .

git commit -m ‘xasdf‘

 

Master:

                            git checkout master

git merge dev

 

 

通过Bug分支紧急修复Bug

 

GitHub(代码托管)

GitLab(公司自己搭建代码托管)

 

公司:

创建远程仓库

写readme

git add .

git commit ...

git push origin master

 

下班

 

家:

git clone https://github.com/WuPeiqi/s5day83.git

git add .

git commit ...

git push origin master

 

到公司:

                     git pull origin master

 

# 继续开发,开发到一半,留点代码回家做

git add .

git commit -m ‘xxx‘

# git push github master

 

家:

 

根据自己的记忆继续写代码:

在家完成后续功能

git add .

git commit -m ‘xxx‘

git push origin master

 

公司:

git pull github master

git fetch github master

git merge github/master    <=> git rebase github/master

 

 

 

解决冲突

# 继续写代码

git add .

git commit -m ‘xxx‘

git push github master

 

 

 

 

 

协同开发:【点点点】

分支:

                     master

review

                     dev

 

协同:

3个人:dev

 

组长:代码review,合并完成后,

 

 

 

你有没有给不牛逼的代码修改过Bug?【点点点】

 

- 么有

 

常用点点点操作:

- 合作开发

- 项目:添加合作者

- 组织:创建人,开发项目

- Fork

- pull request

 

 

头疼问题:连接远程仓库

Https

- 手动输入用户名密码

 

SSH

- 生成一对秘钥 cd ~/.ssh/

- 公钥拷贝到GitHub

- git add remote origin [email protected]:WuPeiqi/Tyrion.git

 

git pull origin master

git push oriing master

 

 

       忽略文件 :   .gitignore

创建这个目录需要在.git同级目录下进行制作

命令是linux下的命令  vim .gitignore

然后在里面添加下面这样子的或者正则表达式就可以

a.* 代表着含有a的文件

 

test/[abc].py代表 test文件夹下a.py   b.py  c.py 都会停止

test/* 代表test下的所有文件都不要了

!test/a.py  代表除了test/a.py 其他都不要检测了

 

.idea/*  这是pycharm自带的功能建议不要了

*.pyc 这是python的编译文件建议不要了

*.excel  这是文本文件如果重要就可以不传了

 

PS: git命令只能在: .git 文件的路径

 

以上是关于git指南的主要内容,如果未能解决你的问题,请参考以下文章

git - 简明指南

GIT使用指南

Git入门指南

Git 进阶指南

Mac上使用Git指南

git - 简明指南