0


Git相关实用性操作

以下引用文档和图片摘自CSDN各个大佬统计,如有侵权请私信告知,仅用作分享

Git介绍:一款开源的分布式控制系统,可以高效的处理任何大小项目,虽然有网页版的Git网站【Gitee - 基于 Git 的代码托管和研发协作平台】,但是在本地安装Git后,可以直接使用命令语句来进行项目的上传与克隆。还是非常方便的。

Git分类:

Git Bash 就是我们现在常用的 跟Linux命令差不多

Git Gui 图形操作,基本没用

Git Cmd windows行风格

一般用于附加到每次提交代码中,用于标识提交者,可以下载完后配置一个用户

git config --global user.name "Your Name"

git config --global user.email "your.email@example.com"

①Git安装:参考如下地址

Git下载安装及环境配置,解决安装包下载慢问题(详细版)-CSDN博客

②Git 的工作流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。git clone
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。 git fetch + git merge
  • 在提交前查看修改。 git diff git diff --staged【显示的是已经添加到暂存区域但尚未提交的内容与最后一次提交之间的差异】
  • 提交修改。 git add . +++++ git commit -m "xxx**"**
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
  • 最后推送 git push

知识拓展:原理讲解

图文并茂详解 Git,看了必懂!

③Git的区分

一般分为如下区:

工作区:英文叫workspace,就是你在电脑能看到的目录,当前存放项目代码的目录

暂存区:英文叫stage或index,git add把工作区修改的内容添加到暂存区当中

版本库:这个一般用不到,就是一个隐藏目录

④常用的命令:

git clone + 远程仓库链接地址 克隆该仓库的项目到本地

git remote add origin https://github.com/username/repository.git 本地关联远程仓库

git ls-remote --heads test_xiaoliu: 欢迎来到我的仓库!!! 查看远程仓库有什么分支

git pull origin remote-branch:local-branch 拉取远程仓库的emote-branch到本地local-branch分支

一般克隆完后,本地会多两个目录,一个是远程仓库的名称和默认主干分支main可以用git branch -r 查看当前所在

git branch +分支名 创建分支

git branch -v 与不带-v同理,只是可以显示每个分支最后一次提交信息

git branch 所有本地分支,并且会标识出当前所在的分支。当前分支会在其前面添加一个 * 符号

git checkout + 分支名 切换分支

git ls-tree -r HEAD 当前分支内的所有文件

**git merge +分支名 ** 把指定的分支合并当前分支

git add +文件名 把工作区的某个代码改动文件添加到暂存区 可能会弹出warning,忽略即可

**git add . ** 把工作区的所有文件改动文件添加到暂存区 可能会弹出warning,忽略即可

**git commit -m "xxx" ** 日志备注,一般在添加完后,执行该命令【把本地暂存区的修改提交到本地代码仓库分支中】

git status + 文件名 查看指定文件状态,不加名字默认查看所有【查看当前操作的状态信息】

"git push origin master(分支名称) 把本地分支的代码推送(提交)到远程分支上去

如果你希望将本地分支与远程分支关联并设置上游分支,可以使用git push -u origin master,这样后面只需要git push命令来推送本地更改到远程仓库的master分支,而不需要每次都指定远程分支和本地分支-------------

PS:取消关联要先确保自己在需要取消的分支,然后运行git branch --unset-upstream

git push <remote> <local_branch>:<remote_branch>

<remote> 是远程仓库的名称,<local_branch> 是本地分支的名称,<remote_branch> 是远程分支的名称

举例:git push origin test_git:div_liu 它的作用是将本地的 test_git 分支推送到远程仓库origin的 div_liu 分支上

git fetch origin 这个命令会从远程仓库下载新的分支和数据。它不会自动合并或修改你当前的工作。它主要用于查看其他人的工作进展

**git pull **origin +<分支名字> 这个命令会从远程仓库抓取数据后立即尝试合并到你当前的分支


git rm --cached 撤回添加到暂存区的文件 。 + 'xx.txt' 指定文件,需要保留文件内容但不希望将其包含在提交中时。

**git reset ** 撤销所有文件的暂存。 +'文件名' 指定撤销某个文件

git log 查看代码修改日志


④文件状态

一般文件有下几种状态 👇

Untracked-未跟踪,也就是在文件夹中,但是没有加入到git库,通过git add +文件名 改变状态未Staged。

Unmodify-未修改,也就是已经入库了,但版本库中的文件内容与该文件夹中的完全一致,这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件。

Modified-文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改。

Staged-暂存状态,也就是已经add过了,执行git commit 则将修改的同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD 文件名取消暂存, 文件状态为Modified。

⑤关于回退

因为每次操作都会有一个版本日志,涉及到回退操作,可以采用如下命令

HEAD指针:本地仓库每一个分支上的代码修改都会生成一个commit id信息,HEAD指针指向最近一次的commit提交,通过这个commit id可以进行版本回退

git reset --hard HEAD^ 回退到上个版本

git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前

git reset --hard commit_id 退到/进到 指定commit的

git reflog 常用于恢复本地的错误操作,显示所有的操作记录,包括提交,回退的操作。一般用来找出操作记录中的版本号,进行回退。精简版本的日志 用HEAD指针管理

git log 可以显示所有提交过的版本信息,不包括已经被删除的 commit 记录和 reset 的操作 ,详细的日志

举例:我们commit了一个操作,发现提交的是错误的,我们进行了回退,git reset HEAD^,也进行了checkout 操作,就是把工作区的文件也回退还原了,这时候发现commit的没有问题。等于说删了不该删的了,咋整,想再回退到删除之前的。找到之前的版本号进行回退,使用git log发现那个提交的版本号记录根本不存在了。

可以观察自己仓库中的: .git目录下面的 HEAD 和 ref 中的 heads 的master

🔍 关于出现冲突?

①要理解冲突:当你运行 git pull 或者 git merge 合并分支时,如果Git无法自动合并修改(可能是因为你和远程仓库或其他分支都修改了同一行),就会发生冲突。

②查看冲突文件: Git 会在冲突的文件中标记出冲突的部分。你可以用文本编辑器打开这些文件查看冲突的具体内容(cat ,vim,)

③手动解决冲突: 在冲突标记中,Git 会用 <<<<<<<,======= 和 >>>>>>> 来标识冲突的区域。手动编辑这些区域,保留你希望保留的内容,并删除Git自动生成的冲突标记。你也可以决定是否要保留两个修改的内容或者只保留一个

④标记解决冲突: 手动编辑后,保存文件。解决完所有文件的冲突后,使用以下命令标记这些文件作为已解决冲突状态:git add <conflicted-file1> <conflicted-file2> ...

⑤提交合并: 所有文件的冲突都解决后,运行 git commit 来提交合并结果:git commit -m "Resolved merge conflict"

⑥推送git push

拓展

自己的gitee仓库

gitee使用教程,创建项目仓库并上传代码_gitee创建仓库上传代码-CSDN博客


本文转载自: https://blog.csdn.net/liuhuamiao/article/details/140157862
版权归原作者 liuhuamiao 所有, 如有侵权,请联系我们删除。

“Git相关实用性操作”的评论:

还没有评论