欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Git的安装、操作。

程序员文章站 2022-07-13 16:17:21
...

安装git地址

  • Windows:https://git-scm.com/downloads

Git配置

  • git config --global:全局git配置,这台机器所有的Git仓库均会使用这个配置
git config --global user.name "eastside" # 你的名字
git config --global user.email "aaa@qq.com" # 你的邮箱

Git操作

创建版本库

版本库又名仓库,英文名repository

你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都
可以追踪历史,或者在将来某个时刻还可以将文件还原

  • 选择,进入某个目录
mkdir project
cd project
  • 初始化目录为本地仓库
git init
  • 初始化之后,目录下会多一个隐藏目录.git,该目录是git用来管理版本的

添加项目文件

  • 以创建django项目为例,在git本地仓库开启一个django项目
django-admin startproject testpro
  • 添加项目文件或目录至暂存区
git add testpro
  • 将暂存区内容提交至本地仓库
git commit -m "a django project"
$ git commit -m "a django project"
[master (root-commit) adb00b3] a django project
 5 files changed, 172 insertions(+)
 create mode 100644 testpro/manage.py
 create mode 100644 testpro/testpro/__init__.py
 create mode 100644 testpro/testpro/settings.py
 create mode 100644 testpro/testpro/urls.py
 create mode 100644 testpro/testpro/wsgi.py

-m参数指定提交注释

  • 查看此时仓库状态
git status
aaa@qq.com MINGW64 ~/Desktop/project (master)
$ git status
On branch master
nothing to commit, working tree clean

文件修改提交

如果在开发过程中,对其中的某个文件进行了修改,那么git在对比文件指纹的过程中发现了差异,此时也需要将新修改的文件进行提交

  • 修改settings.py文件配置
ALLOWED_HOSTS = ["*",]
# ALLOWED_HOSTS = []
  • 查看仓库状态
git status
$ 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:   settings.py

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

此时仓库说,modified: settings.py,我们对其中某个文件进行了修改

  • 将修改之后的文件加入暂存区
git add -A
  • 此时查看状态
git status
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   settings.py
  • 将暂存区的内容提交至本地仓库
git commit -m 'change settings'
On branch master
nothing to commit, working tree clean
  • 丢弃修改,可以丢弃工作区对于文件的修改
git checkout -- settings.py
  • 注意:命令git checkout – settings.py中的–很重要,如果没有–的话,那么命令变成创建分支了

文件删除提交

  • 在django项目的隔壁创建一个1.py文件
touch 1.py
  • 添加该文件
git add -A
git commit -m "add 1.py"
  • 删除该文件
rm 1.py
  • 恢复删除文件
git checkout -- 1.py
  • 提交至本地工作区
git commit -a -m "rm 1.py"

git commit -a:提交全部修改

django-admin startproject demo2
cd demo2                          # 切换到项目路径
git init                          # 初始化这个本地git仓库
# git remote rm origin            # 如有路径不一致可以先删除现有的路径       
git remote add origin http://192.168.56.12/devopsedu/demo2.git    #设置代码提交url路径
touch Readme                      # 新建一个项目文件(工作区)
git add .                         # 把工作区中所有变更全部提交到(暂存区)
git commit -m 'init'              # 把暂存区代码提交到本地git仓库,只有提交到代码库才能被git管理(本地git仓库)
git push origin master            # 将本地仓库的代码推送到线上仓库(线上git仓库)
  • 回滚
git log                        #查看所有提交到仓库的版本记录:   git log -2
git reflog                     #查看所有操作记录(状态的md5值和改变的值)
git reset --hard d9e0ed0       #回到指定版本(d9e0ed0是创建版本的MD5值得前6位或者7位)
git reset --hard HEAD^         #回到上一个版本
注:这样可以回到第一次提交到仓库的状态,但再使用git log看不到其他几次的md5值了

git远程仓库

在团队开发中,我们需要每个开发者彼此配合,对同一款项目代码进行编写,此时需要我们借助线上仓库

  • github:https://github.com
  • gitee:https://gitee.com

由于网络环境,此处选择gitee

  • 将远程仓库添加到本地
git remote add edu aaa@qq.com:eastside/edu.git
  • 添加一个远程库,库名为edu,地址aaa@qq.com:eastside/edu.git

列举当前所有的远程库

git remote
  • 删除某个远程库
git remote remove edu
  • 将本地的仓库推到名为edu的远程仓库中
# 仓库地址:https://gitee.com/eastside/edu.git
git push edu master
  • 将远程仓库的代码拉取到本地,在第一次拉取时,可能因为缺少远程服务器上的README.txt文件,而导致远程和本地的分支不一样,通过以下命令
git pull --rebase origin master # 新建 README文件
git pull edu master --allow-unrelated-histories
  • 将远程仓库克隆到本地
git clone https://gitee.com/eastside/edu.git

这是一个已经和远程仓库master分支关联的本地仓库

  • git全局配置多个用户名冲突时
$  git config --global --replace-all user.email "输入你的邮箱" 
$  git config --global --replace-all user.name "输入你的用户名"

GIT分支

每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支

截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支

我们可以通过checkout命令进行分支的创建及切换

  • git checkout -b:创建并切换分支
    • git branch branchname:创建分支
    • git checkout branchname:切换分支
  • 创建一个测试分支
git checkout -b testbranch
  • 删除一个分支
git branch -d testbranch
  • 提交分支代码
git push --all
  • 合并分支
git merge testbranch
'''1. 从master分支切换到dev分支进行开发'''
git checkout -b dev master    # 从master分支创建dev开发分支
git branch                    # 可以看到现在已经切换到dev分支了
vim Readme                    # 模拟在项目中修改代码
git add .                     # 把工作区中所有变更全部提交到(暂存区)
git commit -m 'in dev'        # 把暂存区代码提交到本地git仓库(本地git仓库)
git push origin dev           # 把代码先推倒dev分支,让测试人员测试

'''2. 当测试人员测试完成后将dev分支代码合并到master形成文档版本'''
git checkout master           # 开发完成后,需要合并回master分支,先切换到master分支
cat Readme                    # 可以看到master分支的内容没有修改
git merge --no-ff dev         # 将刚刚dev中修改的代码合并到master
git push origin master        # 将本地仓库的代码推送到线上仓库(线上git仓库)

GIT冲突

常见git冲突造成,是由于在多个分支下,或多个仓库中,对同一个文件修改,或添加了新的文件之后

由于某一方对于文件的修改没有及时在另一方生效,当另一方或另一分支在进行提交时,即会出现冲突

  • 在testbranch分支下,修改1.py文件,并提交到云仓库
  • 在master分支下,也修改1.py文件,并尝试提交
    Git的安装、操作。
  • 此时冲突出现,使用git status命令查看当前仓库状态
    Git的安装、操作。
  • 查看被修改的文件1.py
    Git的安装、操作。
  • Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其 中<<<HEAD是指主分支修改的内容,>>>>> testbranch是指fenzhi1上修改的内容,我们可以将差异部分的标注删掉重新提交,或是与对方协商,另行拷贝文件内容,重新clone仓库,将拷贝过的内容添加至内
  • 之后再进行提交
git add 1.py
git commit -m "conflict fixed"
  • 就搞定了

转至:https://lienze.tech/git/b8f4bd70.html