一、Git工具的安装
1)centos系统下安装
1.1)查看环境
[root@gitlab ~]# rpm -qa centos-release centos-release-7-4.1708.el7.centos.x86_64 [root@gitlab ~]# uname -a Linux gitlab 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [root@gitlab ~]# getenforce Disabled [root@gitlab ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
1.2)yum安装,yum 工具
#centos 自带git [root@gitlab ~]# rpm -qa git git-1.8.3.1-11.el7.x86_64 #安装方法 yum install git -y
1.3)编译安装。建议使用编译安装。自带的git版本较低
git工具下载:https://github.com/git/git/releases

# 安装依赖关系 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel # 编译安装 tar -zxf git-2.0.0.tar.gz cd git-2.0.0 make configure ./configure --prefix=/usr make make install
yum install autoconf -y
yum install zlib-devel -y
yum install -y perl perl-devel
2)Windows下安装
过程略
2)git命令的基本使用,如显示文件,创建文件

lenvovo@LENVOVO-PC MINGW32 /e/test $ mkdir git_test # 创建文件夹 lenvovo@LENVOVO-PC MINGW32 /e/test $ cd git_test/ # 进入文件夹 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test $ git init # git 初始化,生成 .git下的隐藏文件 Initialized empty Git repository in E:/test/git_test/.git/ lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ cd .git/ # 进入隐藏文件 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test/.git (GIT_DIR!) $ ls # 显示隐藏文件内容 config description HEAD hooks/ info/ objects/ refs/ lenvovo@LENVOVO-PC MINGW32 /e/test/git_test/.git (GIT_DIR!) $ cd .. lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ ls -a ./ ../ .git/ lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ cat first_program.py def sayhi(name): print("hello world!",name)
git init # 初始化文件
3)提交文件

lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git add first_program.py # 将代码放入暂存区 warning: LF will be replaced by CRLF in first_program.py. The file will have its original line endings in your working directory. lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git commit # 存入暂存区,失败,因为要表明是谁提交的代码 *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'lenvovo@LENVOVO-PC.(none)') lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git config --global user.email "1257063655@qq.com" # 写邮箱名 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git config --global user.name "lover" # 写用户名 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git commit # 再提交,会弹出一个文件,里面必须添加为什么要提交文件 [master (root-commit) 8323763] git test commit 1 file changed, 2 insertions(+) create mode 100644 first_program.py lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git commit # 再提交,显示没有内容需要提交了 On branch master nothing to commit, working tree clean
4)修改文件回滚操作,前提是没有git add

lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ 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: first_program.py Untracked files: (use "git add <file>..." to include in what will be committed) readme no changes added to commit (use "git add" and/or "git commit -a") lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ cat first_program.py def sayhi(name): print("Hello sb!",name) print('user') print('Second change') lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ git checkout first_program.py lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master) $ cat first_program.py def sayhi(name): print("Hello sb!",name) print('Second change')
5)命令总结
git add first_program.py # 将文件放入暂存区 git add . # 提交整个目录与暂存区 git commit # 如果失败需要要表明是谁提交的代码 git config --global user.email "1257063655@qq.com" # 写邮箱名 git config --global user.name "lover" # 写用户名 会弹出一个文件,里面必须添加为什么要提交文件 git commit -m "second commit test" # 避免弹框,将为什么提交写在后面
git push origin master 提交代码 git status # 查看文件的状态 git checkout first_program.py # 回滚操作,前提是没有git add,还原到上次提交时的文件 # 提交之后的回滚 git log # 查看提交的日志 git log --pretty=oneline # 忽略不重要的信息 git reset --hard HEAD^ # 回滚到上一次提交时 git reset --hard 8323763f7b5dfd365f593fb724346ce692bdc258 # 回滚到指定的版本号 git reset --hard 832376 # 写上前6位就可以了 # 如果关闭了命令行,找不到了版本号 git reflog # 回滚的最后招数,所有的操作记录都显示了,可查看到版本号
6)git 提交代码
git使用账号: 账号:user03 密码:123456 ====================================== mkdir -p /root/user_git cd /root/caojin_git/ git clone http://192.168.1.5/ODW/ProjectD_svr.git cd ProjectD_svr git checkout trunk 从线上拉取分支代码 每天第一次执行的操作 cd /root/user_git/ProjectD_svr/ git pull 从服务器更新代码到本地 ============================= # 修改代码后 git status 查看差异文件 git diff 文件 ===对比无误 git add test.py git commit -m "add test" 提交 第一次提交时 git config --global user.email "11111111@qq.com" git config --global user.name "user03" 再进行git commit git push 需要输入用户名,密码
二、github的使用
1)创建好账号后,创建项目
2)创建好项目后。操作提示
3)克隆创建的项目代码
使用https的方式
4)修改代码后上传至GitHub仓库
上传代码步骤总结
git clone https://github.com/xxxx/xxxxxxx # 克隆代码到本地 修改文件之后 git add . git commit -m "first_commit" git config --global user.email "125@qq.com" git config --global user.name "you name" git push -u origin master # 上传至远程仓库 输入用户名 输入密码
5)将已有的本地仓库推送到GitHub仓库中
在本地git仓库里面执行的操作都将上传至GitHub
git remote add origin https://github.com/xxxx/xxxxxxx git push -u origin master
6)使用秘钥的方式
先在本地生成秘钥
再将秘钥内容拷贝到GitHub的setting里面:deploy keys里只对该仓库有效
SSH and GPG keys对所有仓库有效:new ssh key
7)做了秘钥之后,可以使用ssh克隆GitHub仓代码
git clone git@github.com:xxxx/xxxxxxx 修改文件 git add . git commit -m "change on linux" git push origin master
三、开发流程。GitHub的分支管理
1)分支使用流程
创建了分支之后,提交会显示分支出来。
分支使用流程总结
git checkout -b dev # 创建dev分支 git branch # 查看分支 * dev # *,当前分支 master 主分支 提交...... git push origin dev # 提交到自己的分支上 git checkout master # 切换到 主分支 git branch # 查看分支 dev * master # 当前是在主分支
2)分支与主库合并代码

在主库上 git pull 更新主库代码 Already up-to-date git merge dev # 合并分支的代码 只能合并没有相同的文件,有相同的文件,就有冲突 git status # 查看主库和分支代码不一样的地方 both modified : first_program.py # 该文件都修改了 vim first_program.py # 查看文件差异,解决冲突 def sayhi(name): .... <<<<< HEAD 主库代码 ======= 都有的代码 >>>>> dev 分支代码 git add . git commit -m "test" git push origin master
需要使用比对工具软件
3)如果主库已经更新,分支继续开发新代码,合并时也需要处理冲突问题
4)保存当前环境的工作代码
git stash # 把当前工作环境临时保存
git stash apply # 恢复之前保存的临时工作
git stash list # 查看临时保存的列表
git stash drop # 删除当前临时保存的环境备份
git stash pop # 恢复并删除临时保存的备份
5)编辑不想维护,不想上传的代码
vim .gitignore # 编辑忽略不想要的上传的文件
推送tag
$ git tag -a pairecord_20210721_02.tag -m "协程版本" $ git push -u origin master pairecord_20210721_02.tag
四、总结
多人开发的工作模式
1、首先,可以试图用git push origin branch-name推送自己的修改; 2、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并; 3、如果合并有冲突,则解决冲突,并在本地提交; 4、没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功
原来链接:https://www.cnblogs.com/alex3714/articles/5930846.html
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· 后端思维之高并发处理方案
· 千万级大表的优化技巧
· 在 VS Code 中,一键安装 MCP Server!
· 想让你多爱自己一些的开源计时器
· 10年+ .NET Coder 心语 ── 继承的思维:从思维模式到架构设计的深度解析