一 基础git 创建修改
1.创建本地版本库
# 创建⽂件夹
$ mkdir demo
# 进⼊当前⽬录
$ cd demo
# 查看⽬录
$ pwd
# 将当前⽬录变成Git可管理的版本库⼜名仓库,英⽂名repository
$ git init Initialized empty Git repository in
/home/ynxiaolu/Desktop/demo/.git/
2.⽂件添加操作
# 1. ⼯作区中创建新⽂件hello.py
$ vi hello.py
# 2. 查看⽂件状态
$ git status
# 3. 将源码拷⻉到暂存区
$ git add hello.py
# 4. 将暂存区移动到当前分⽀
$ git commit -m "创建新⽂件hello.py"
# 5. 查看状态
$ git status
On branch master
nothing to commit, working tree clea
3.⽂件删除操作
# 1. 删除⼯作区中的⽂件(并没有删除仓库中到⽂件)
rm hello.py
# 继续执⾏以下操作才能真正删除仓库中⽂件
$ git add hello.py
$ git commit -m "delete hello.py"
# 2. 删除⼯作区⽂件并将此次删除放⼊暂存区
git rm hello.py
# 继续执⾏以下语句
$ git commit -m "delete hello.py"
# git rm 进⾏⽂件删除时要保证和仓库中版本⼀致,否则报错。
# 3. 删除⼯作区和暂存区⽂件,并且将这次删除放⼊暂存区。(删除的⽂件⼯作区和仓库
版本不⼀致)
$ git rm -f hello.py
$ git commit -m "delete hello.py"
# 4. 删除暂存区⽂件,但保留⼯作区的⽂件,并且将这次删除放⼊暂存区。
$ git rm --cached hello.py
4. ⽂件修改操作
# 修改⽂件
$ vi hello.py
# 查看状态
$ git status
# 添加暂存区
$ git add hello.py
# 添加版本库
$ git commit -m '描述信息'
# 添加并提交到分⽀中
$ git commit -am '描述信息'
5. 查看历史版本
git log / git reflog
区别:
git log 不能查看已删除⽂件的提交记录
git reflog 可以查看所有分⽀的操作记录包括提交和撤销记录以及已删除⽂件的 提交记录。
6.⽂件撤销操作
⽅式1 :
- HEAD表示当前最新版本
- HEAD^表示当前最新版本的前⼀个版本
- HEAD^^表示当前最新版本的前两个版本,以此类推...
- HEAD~1表示当前最新版本的前⼀个版本
- HEAD~10表示当前最新版本的前10个版本,以此类推..
$ git reset --hard HEAD^
⽅式2 当版本⾮常多时可选择的⽅案:
通过每个版本的版本号回退到指定版本
$ git reset --hard 版本号
说明:
- 只能撤销⼯作区、暂存区的代码,不能撤销仓库区的代码
- 撤销仓库区的代码就相当于回退版本操作
# 撤销⼯作区代码(没有添加到暂存区代码)
$ git checkout ⽂件名
# 撤销暂存区代码(将⽂件从暂存区撤销到⼯作区)
$ git reset HEAD ⽂件名
二 分支管理
1.为什么使⽤分⽀
通过分⽀操作可以更⽅便的进⾏迭代开发。 不同版本代码之间互不⼲扰。
2.解决终端⽆法显示分⽀名
# 1.终端安装zsh
sudo apt install zsh
# 2.查看版本
zsh --version
# 3.终端安装oh-my-zsh
sh -c "$(wget
https://raw.githubusercontent.com/robbyrussell/oh-myzsh/master/tools/install.sh -O -)"
# 就在第三步有同学会拒绝连接443 ⽆法安装
# 配置hosts
# 4.如果第三步⽆法继续就执⾏配置hosts操作
sudo vi /etc/hosts
# 在hosts⽂件中追加以下内容
# GitHub Start
52.74.223.119 github.com
192.30.253.119 gist.github.com
54.169.195.247 api.github.com
185.199.111.153 assets-cdn.github.com
151.101.76.133 raw.githubusercontent.com
151.101.76.133 gist.githubusercontent.com
151.101.76.133 cloud.githubusercontent.com
151.101.76.133 camo.githubusercontent.com
151.101.76.133 avatars0.githubusercontent.com
151.101.76.133 avatars1.githubusercontent.com
151.101.76.133 avatars2.githubusercontent.com
151.101.76.133 avatars3.githubusercontent.com
151.101.76.133 avatars4.githubusercontent.com
151.101.76.133 avatars5.githubusercontent.com
151.101.76.133 avatars6.githubusercontent.com
151.101.76.133 avatars7.githubusercontent.com
151.101.76.133 avatars8.githubusercontent.com
# GitHub End
# 5. 重复第三步操作即可安装成功
2.分⽀操作
# 创建分⽀
$ git branch 分⽀名
# 查看分⽀
$ git branch
# 切换分⽀
$ git checkout 分⽀名
# 创建+切换分⽀
$ git checkout -b 分⽀名
# 合并某分⽀到当前分⽀
$ git merge 分⽀名
# 删除某分⽀
$ git branch -D 分⽀名
#查看⽇志记录(以图形形式展现)
$ git log --graph --pretty=oneline --abbrev-commit
$ git log --graph --decorate --oneline --all
3.合并分⽀解决冲突
当前分⽀1 分⽀2 前提分⽀1和分⽀2都进⾏了代码修改。
将分⽀2的内容合并到分⽀1
# 1. 切换到当前分⽀1
$ git checkout 分⽀1
# 2. 和分⽀2进⾏合并
$ git merge 分⽀2
# 3. 执⾏第⼆步后出现冲突(CONFLICT)
$ git merge dev
Auto-merging hello.py
CONFLICT (content): Merge conflict in hello.py
Automatic merge failed; fix conflicts and then commit the
result.
# 4. 解决⽅案:
print 'first'
<<<<<<< HEAD
print 'master second'
=======
print 'dev second'
>>>>>>> dev
1. 编辑合并分⽀1和分⽀2的内容
2. 修改好之后,$ git add ⽂件名
3. $ git commit -m "描述信息"
三 远程仓库和本地仓库
1.远程库中配置本地公钥
github官⽹-> ⽤户图标-> 设置
2.关联远程仓库
$ git remote add origin git@github.com:pythonde/newRepository.git
3. 查看远程库信息
$ git remote -v
4.上传数据到远程库
# '-u' 的意思为以后可以⽤git push 替换 git push origin dev
$ git push -u origin dev
5.远程库更新本地库
$ git pull --rebase origin dev
6.从远程库下载源码到本地库
$ git clone git@github.com:pythonde/newRepository.git
7.删除连接远程库
$ git remote rm origin
四 多人协作开发
操作背景: 张三(组员)和李四(项⽬负责⼈)共同完成同⼀个项⽬
1. 李四(项⽬负责⼈)操作步骤
- 在github中 创建远程版本库test git
- 将基础代码上传⾄testgit远程库
- 远程库中 基于main分⽀创建dev分⽀
- 将 github leaflife/testgit 共享给组员
- 李四继续在 基础代码上添加 ⾃⼰负责的模块内容
2. 张三(组员)操作步骤
- 在桌⾯ 新建zhangsan⽂件夹
- 登录⾃⼰的github账户中
- GitHub搜索githubleaflife/testgit fork到⾃⼰的账户 中
- 下载源码到本地
- 新增模块功能
3.协同开发过程中遇到问题
- 上传代码到远程库
- 解决冲突问题
编辑冲突⽂件
- 同步更新⽂件状态
5.上传内容到远程库
五 添加标签
思考:在多⼈协同开发过程中,遇到⼤的版本时,该怎么记录下来呢?
可以采⽤打标签⽅式记录。
1. 添加本地标签和远程标签
2. 查看已创建标签
#查看标签列表
$ git tag
# 查看标签详情
# git show 标签名
$ git show v1.0
3. 删除标签
# 删除本地标签
$ git tag -d 标签名
# 删除远程仓库标签
$ git push origin --delete tag 标签名
4.补充内容
图形⽅式查看⽇志: