Git
git的工作流程
基本流程
git pull
一、Git的安装
https://git-scm.com/download/win
下载地址
GITHUB下载比较慢,我们可以去国内镜像下载 https://npm.taobao.org/mirrors/git-for-windows/
下载之后一直下一步安装完即可。
安装完成后,邮件会多出来2个git开头的选项
双击GIt Bash Here. 在这种命令窗口下可以使用linux命名。
出现如下画面就可以输入git命令了
命令
1. git init
git init xxx
初始化 新建立一个代码仓库
然后adeng文件夹下面会多出来一个.get的文件夹
.git 文件夹下面有如下文件
.git下面的文件不要删,删了就不会被管理了
2. git add .
git add a.txt
将a.txt文件提交到管理区。git status查看状态 文件是绿色
表示在暂存区。红色表示未被管理。如下图:
3. git commit -m "本次提交说明"
git commit 提交到版本库
第一次使用git commit -m "xxx"会出现如下画面
git config --global user.name "这里是你的github用户名"
git config --global user.email [email protected](你的邮箱)
怎么解决呢:
一次输入两行命名就行。
再次输入git commit -m "新增修改a文件数据"
就没有报错了
会在用户目录下有个.gitconfig文件,内容就是上面敲的2条命令中的 邮箱和用户名
4. git checkout . 当前路径下的文件回滚到提交前版本
上面我修改了a.txt文件的数据。
之前是没有数据的。现在a.txt已经在版本库里面了。这时候执行git checkout . 就会回到提交前。
5.git log 查看版本管理日志
- git reflog 显示当前分支最近提交
6. git status 查看状态
7.git reset --hard 版本
版本号就是commit后面那一串字符,可以不用写全。如下
8. 如何忽略文件
- 新建的空文件夹,不会被管理。里面只要加了东西,git status就会红色
- 指定某些文件或者文件夹不被git管理
- 在项目根路径,跟.git文件夹一个路径,新建
.gitignore
文件
-
#
号 是注释,没有用 - 文件夹名字,表示 此文件夹不被管理
- 文件夹摸个文件想忽略 就写 想忽略的文件路径,支持通配符*
-
/dist
表示根路径下的dist文件夹,不被管理 - *.py 表示后缀为py文件的不被管理
-
*.log*
带有.log的任意文件不被管理 - !a.txt 除了a.txt不被管理
注意新建.gitignore时候后面多加个. 不然windows上面会报错
.gitignore 创建好了如上图。
- 如下所看到git status c文件有东西的情况也没变红。.gitignore这个文件我们还是要管理的。
想忽略文件夹下的某个文件。直接写上文件的路径在.gitignore里面
py结尾的文件没有提交到暂存区,其他都提交到了暂存区。如下图:
一般.gitignore如下图那么去写
分支操作
- git branch 查看所有分支,如果是绿的,表示在当前分支上。
- git branch 分支名 创建分支
- git checkout 分支名 切换
- git branch -d 分支名 删除分支名
注意如果在分支上,是不能删除的.需要切换到master上在删除
- git checkout -b 分支名 创建并切换
- git branch -a 查看远程分支和本地分支
- git branch -r 查看远程分支
- git merge 分支名 把dev分支合并到master分支:
切换到master分支,执行合并dev分支的命令
。
分支合并注意点:
master: 主分支,主要用来版本发布。
develop:日常开发分支,该分支正常保存了开发的最新代码。
feature:具体的功能开发分支,只与 develop 分支交互。
release:release 分支可以认为是 master 分支的未测试版。比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release 分支,测试没有问题并且到了发布日期就合并到 master 分支,进行发布。
hotfix:线上 bug 修复分支
GITEE 账号注册
https://gitee.com
注册就不说了
配置SSH公钥
登录gitee--个人头像--设置--ssh公钥
如何生成公钥步骤:
在个人用户目录【C:\Users\xxx】下简历一个.ssh的目录。创建目录需要输入
.ssh.
创立。右键git bash here
输入
ssh-keygen -t rsa -C "[email protected]"
生成公钥和私钥。但是我们只要公钥
- 复制
.ssh
文件夹下面id_rsa.pub
文件的公钥粘贴到gitee上面ssh文本框里 - 添加后,在终端(Terminal)中输入
ssh -T [email protected]
详细设置ssh公钥参考地址:https://gitee.com/help/articles/4181#article-header0
码云创建一个自己的仓库
看图跟着走吧,一目了然
这样gitee仓库就生成好了如下图
pycharm继承GIT
pycharm新建一个项目。
git clone先拉取gitee上面创建的仓库地址。
将gitee仓库的所有文件复制到新建的项目里。
重启pycharm会发现多出来如下git在图标
- 红色1.py 表示未被管理的状态
pycharm如何提交(相当于 git commit -m )
提交之后:会图下图发现 没有任何红色了
pycharm终端也可以输入 git命令进行提交 效果一样
pycharm git push到远程仓库
1.py 和 2.py成功推送到了远程仓库
init创建的仓库添加到gitee
使用url地址添加远程库 git remote add 远程仓库名 url 添加一个远程仓库
git remote add 远程仓库名 https://gitee.com/name/object_name.git
- git remote 查看关联的远程仓库的名称
- 查看远程库信息:git remote -v
- 移除和远程库的连接:git remote remove orgin
push推送到远程仓库
-
git push -u origin master
将本地分支的更新全部推送到远程仓库master分支。 -
git push origin -d
删除远程branchname分支 -
git push --tags
推送所有标签
pulss 拉取远程仓库代码
git pull 拉取远程仓库所有分支更新并合并到本地分支。
git pull origin master 将远程master分支合并到当前本地分支
git pull origin master:master 将远程master分支合并到当前本地master分支,冒号后面表示本地分支
git fetch --all 拉取所有远端的最新代码
git fetch origin master 拉取远程最新master分支代码
免密登录
- git push -u origin master 这条命令老师要输入密码 如何免密?
1 . cd到home目录 cd ~
2.创建一个文件夹 touch .git-credentials
3.vi .git-credentials
输入 http://{用户名}:{密码}@gitee.com
github:github.com
- .gitconfig下面会多出来
[credential]
helper = store
git bash 过程
一般的流程
git全局设置
git config --global user.name "这里是你的github用户名"
git config --global user.email "[email protected]"
创建远程仓库
mkdir my_python
cd my_python
git init
touch README.MD
git status
git add .
git commit -m "第一次提交"
git remote add origin https://gitee.com/name/object_name.git
git push -u origin master
git pull
创建dev分支,并且切换到dev.
本地分支有master和dev 远程这时候只有dev
这时候把本地dev分支推送到远程dev分支。git push -u origin dev
删除远程dev 分支 git push -u origin -d dev
git push 默认是推送到远程仓库 一摸一样的分支上面
而远程仓库有master dev两个分支,你拉取代码之后本地只有一个master,所以本地git push -u origin 指明远程仓库的分支名
否则会推送到和本地一抹一样的分支名上面。
分支合并
比如把dev分支合并到master分支。先git checkout master
然后在执行合并到master分支,get merge dev
pycharm合并,也是要先切换到master 然后如图操作
解决版本冲突
先去gitee上面拉取一个仓库的代码
如下图从python_sduty.仓库拉取2次。
第一次放在I:\python20\softwaredate\python_sduty
第一次放在I:\python20\softwaredate\python_sduty1
[email protected]:adeng520/python_sduty.git
I:\python20\softwaredate\python_sduty1
如图A B 两个开发,刚开始一模一样,都同时开发这个py文件
B开发 添加了c=3 并且提交了代码
A开发 添加了一行 d=5的代码 如图
A开发这时候,先pull一下代码 结果发现冲突了
解决完冲突A开发 继续提交了代码到远程仓库
最后push发现提交成功了,表示这次冲突完美解决