Git基本操作。一篇解决

Git

git的工作流程

image.png
image.png

基本流程

image.png

git pull

image.png

一、Git的安装

https://git-scm.com/download/win 下载地址

image.png

GITHUB下载比较慢,我们可以去国内镜像下载 https://npm.taobao.org/mirrors/git-for-windows/

下载之后一直下一步安装完即可。

安装完成后,邮件会多出来2个git开头的选项

image.png

双击GIt Bash Here. 在这种命令窗口下可以使用linux命名。

出现如下画面就可以输入git命令了

image.png

命令

1. git init

git init xxx初始化 新建立一个代码仓库

image.png

然后adeng文件夹下面会多出来一个.get的文件夹

image.png

.git 文件夹下面有如下文件 .git下面的文件不要删,删了就不会被管理了

image.png

2. git add .

git add a.txt将a.txt文件提交到管理区。git status查看状态 文件是绿色表示在暂存区。红色表示未被管理。如下图:

image.png

3. git commit -m "本次提交说明"

git commit 提交到版本库

image.png

第一次使用git commit -m "xxx"会出现如下画面

git config --global user.name "这里是你的github用户名"

git config --global user.email [email protected](你的邮箱)

image.png

怎么解决呢:

一次输入两行命名就行。

再次输入git commit -m "新增修改a文件数据" 就没有报错了

image.png

会在用户目录下有个.gitconfig文件,内容就是上面敲的2条命令中的 邮箱和用户名

image.png

4. git checkout . 当前路径下的文件回滚到提交前版本

上面我修改了a.txt文件的数据。

image.png

之前是没有数据的。现在a.txt已经在版本库里面了。这时候执行git checkout . 就会回到提交前。

5.git log 查看版本管理日志

  • git reflog 显示当前分支最近提交
image.png

6. git status 查看状态

7.git reset --hard 版本

版本号就是commit后面那一串字符,可以不用写全。如下


image.png

8. 如何忽略文件

  • 新建的空文件夹,不会被管理。里面只要加了东西,git status就会红色
  • 指定某些文件或者文件夹不被git管理
  • 在项目根路径,跟.git文件夹一个路径,新建.gitignore文件
  • # 号 是注释,没有用
  • 文件夹名字,表示 此文件夹不被管理
  • 文件夹摸个文件想忽略 就写 想忽略的文件路径,支持通配符*
  • /dist表示根路径下的dist文件夹,不被管理
  • *.py 表示后缀为py文件的不被管理
  • *.log* 带有.log的任意文件不被管理
  • !a.txt 除了a.txt不被管理

注意新建.gitignore时候后面多加个. 不然windows上面会报错

image.png

.gitignore 创建好了如上图。

image.png
  • 如下所看到git status c文件有东西的情况也没变红。.gitignore这个文件我们还是要管理的。
image.png

想忽略文件夹下的某个文件。直接写上文件的路径在.gitignore里面

image.png
image.png

py结尾的文件没有提交到暂存区,其他都提交到了暂存区。如下图:

image.png

一般.gitignore如下图那么去写

image.png

分支操作

image.png
  1. git branch 查看所有分支,如果是绿的,表示在当前分支上。
image.png
  1. git branch 分支名 创建分支
  2. git checkout 分支名 切换
image.png
  1. git branch -d 分支名 删除分支名

注意如果在分支上,是不能删除的.需要切换到master上在删除

image.png
  1. git checkout -b 分支名 创建并切换
  2. git branch -a 查看远程分支和本地分支
  3. git branch -r 查看远程分支
  4. 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公钥

image.png

如何生成公钥步骤:

  1. 在个人用户目录【C:\Users\xxx】下简历一个.ssh的目录。创建目录需要输入.ssh.创立。

  2. 右键git bash here

  3. 输入 ssh-keygen -t rsa -C "[email protected]"生成公钥和私钥。但是我们只要公钥

image.png
  1. 复制.ssh文件夹下面id_rsa.pub文件的公钥粘贴到gitee上面ssh文本框里
  2. 添加后,在终端(Terminal)中输入
    ssh -T [email protected]

详细设置ssh公钥参考地址:https://gitee.com/help/articles/4181#article-header0

码云创建一个自己的仓库

看图跟着走吧,一目了然

image.png

image.png

这样gitee仓库就生成好了如下图

image.png

pycharm继承GIT

pycharm新建一个项目。

git clone先拉取gitee上面创建的仓库地址。

将gitee仓库的所有文件复制到新建的项目里。

image.png

重启pycharm会发现多出来如下git在图标

image.png
  • 红色1.py 表示未被管理的状态

pycharm如何提交(相当于 git commit -m )

image.png
image.png

提交之后:会图下图发现 没有任何红色了

image.png

pycharm终端也可以输入 git命令进行提交 效果一样

pycharm git push到远程仓库

image.png

1.py 和 2.py成功推送到了远程仓库

image.png

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

  1. .gitconfig下面会多出来
    [credential]
    helper = store
image.png

git bash 过程

image.png

一般的流程

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.

image-20211103135412185

本地分支有master和dev 远程这时候只有dev

image-20211103135642276

这时候把本地dev分支推送到远程dev分支。git push -u origin dev

image-20211103141047679
image-20211103141242432

删除远程dev 分支 git push -u origin -d dev

image-20211103141556991
image-20211103141624927

git push 默认是推送到远程仓库 一摸一样的分支上面

image-20211103141944380

而远程仓库有master dev两个分支,你拉取代码之后本地只有一个master,所以本地git push -u origin 指明远程仓库的分支名 否则会推送到和本地一抹一样的分支名上面。

分支合并

比如把dev分支合并到master分支。先git checkout master 然后在执行合并到master分支,get merge dev

image-20211103143928932

pycharm合并,也是要先切换到master 然后如图操作

image-20211103153014614

解决版本冲突

先去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

image-20211103114854732
image-20211103115051196

如图A B 两个开发,刚开始一模一样,都同时开发这个py文件

image-20211103155230062

B开发 添加了c=3 并且提交了代码

image-20211103155114796

A开发 添加了一行 d=5的代码 如图

image-20211103155445258

A开发这时候,先pull一下代码 结果发现冲突了

image-20211103155936164
image-20211103160029679

解决完冲突A开发 继续提交了代码到远程仓库

image-20211103160306570

最后push发现提交成功了,表示这次冲突完美解决

你可能感兴趣的:(Git基本操作。一篇解决)