您现在的位置是:首页 >学无止境 >版本控制工具之Git使用文档网站首页学无止境

版本控制工具之Git使用文档

青铜大神 2024-06-17 10:47:09
简介版本控制工具之Git使用文档

以下讨论基于gitlab系统作为代码仓库。

项目Git初始化

        创建一个空的git库或者初始化一个旧有git仓库

git init

现有项目关联到远程仓库

git remote add origin git@172.16.200.39:public-team/spring-learn.git

下载代码

git clone <仓库地址>

查看已关联远程仓库

git remote -v

创建分支

git branch -c "新分支名称"

切换分支

#如果分支不存在,先创建分支
git checkout -b "新分支名称"
#如果分支已存在
git checkout "新分支名称"

查看文件提交状态

git status

查看文件修改内容

git diff <文件路径>

缓存文件

git add <文件路径>

放弃文件修改

git checkout <文件路径>

取回缓存文件

git reset <文件路径>
# 取回所有文件
git reset *

提交修改到本地仓库

git commit -m "提交说明"

推送到远程仓库

#master分支
git push
#其他分支
git push 远程仓库名称 <分支名称>
或者
git push 远程仓库名称 <本地分支名称>:<远程分支名称>

查看提交记录

git log

回退版本

#分为两种情况
#已commit到本地仓库,未push到远程仓库
git reset --soft <回退目标版本号>
#已push到远程仓库
# 缺点是强制回退,会删除版本日志
git reset --hard <回退目标版本号>
#使用revert,版本反写
git revert -n <版本号>

退出Reverting状态

git revert --quit

取消文件跟踪

git rm <文件名>

合并分支

git merge <合并源分支>

删除分支

git branch -d <分支名称>

查看提交版本修改内容

git show <版本号>

我遇到的一些问题

        初始项目代码提交问题

                执行git init会初始化当前分支为master,而初始gitlab是没有这个分支的,这就造成了无法提交代码的情况。

#提交到origin仓库的master分支
git push origin master
#如果我想把切换到main分支再提交代码
#先切换到main分支
git checkout -b main
#想要拉取main分支的readme文件失败
git pull
#原因是本地的main分支是新创建的,而远程的main分支创建早于本地,所以需要加--allow-unrelated-histories参数允许合并历史纪录
git pull origin main --allow-unrelated-histories
#再执行push就可以了
git push origin main

        跟队友代码冲突问题

                跟队友同时修改了同一个文件。上面是你的修改,下面是队友的修改。

                (1)简单粗暴的方法是手动修改。

                (2)执行git mergetool运行代码合并工具。

        开发过程中遇到线上问题需要切换分支

                我们需要拉取一个临时分支去修改线上bug,但当前开发分支又存在已修改文件无法切换分支。这种情况是很可能出现的。

 

                 这个时候,reset是不可能的,不能浪费了我的劳动成果,我需要使用git stash将已修改文件暂时保存。

# 暂存修改文件
git add <修改文件>
# 保存临时改动
git stash push -m "注释"
# 再切换分支

        使用reset命令回退了版本怎么找回

                如果我们遇到了这种操作失误的话,也不要慌。git早就帮我们想好了解决办法。git有个reflog命令可以查看所有的版本引用变化,包括不会留下log日志的reset --hard。

git reflog

                图中就显示了我git执行reset时的引用变化,我们再用reset去回退reset。

# 将版本回退到HEAD@{2}
git reset --hard HEAD@{2}

        这样版本就被找回了!!!

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。