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 status命令查看当前仓库状态
- 查看被修改的文件1.py
- Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其 中<<<HEAD是指主分支修改的内容,>>>>> testbranch是指fenzhi1上修改的内容,我们可以将差异部分的标注删掉重新提交,或是与对方协商,另行拷贝文件内容,重新clone仓库,将拷贝过的内容添加至内
- 之后再进行提交
git add 1.py
git commit -m "conflict fixed"
- 就搞定了
转至:https://lienze.tech/git/b8f4bd70.html
上一篇: 【Unity】unity 鼠标画线
下一篇: OP-TEE 环境搭建