版本管理——git 使用基础

本文详细介绍了Git在Windows和Linux上的安装过程,以及Git的基本操作,包括配置文件设置、创建仓库、提交修改、分支管理(创建、切换、删除、合并)、日志查看、远程操作、撤销提交、删除文件和版本回退。此外,还讨论了常见的Git使用错误及其解决方案,如non-fast-forward、unrelatedhistories等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git 安装

windows 安装

在这里插入图片描述
Git的安装与使用教程

linux安装

sudo apt-get install git

git 基本操作

git 配置文件

分别有三个,优先级由高到低分别是
文档库所在文件夹中 .git 子文件夹内的 config 文件
git config user.name ‘name’
git config user.email ‘emailaddress’
登录账号的 home directory 中的 .gitconfig 文件,此配置文件只对此账号登录的用户有效
git config –global user.name ‘name’
git config –global user.email ‘emailaddress’
Git 安装文件夹的 etc\gitconfig 文件
git config –system user.name ‘name’
git config –system user.email ‘emailaddress’

创建仓库

git init
git clone 远程仓库
git clone = git init(创建本地存储库)
git remote add(将URL添加到该存储库)
git fetch(从该URL中获取所有分支到本地存储库)
git checkout(创建工作树中主分支的所有文件)

提交修改

git add
git add file1 file2 把当前文件加入到暂存区

git commit -m/–amend
–amend 修改git提交记录
有时你提交过代码之后,发现一个地方改错了,你下次提交时不想保留上一次的记录;或者你上一次的commit message的描述有误,这时候你可以使用接下来的这个命令:git commit --amend。
注意:该操作会改变你原来的commit id
如何修改任意一次提交记录的commit 注释说明?

git status
git checkout
git rm
git mv
git diff
git reset
git merge

日志

git log
git log --graph --oneline --all --decorate
–graph: commit 节点的演进图
–oneline: 精简的方式显示
–all: 显示所有分支
–decorate:标识分支的名称

git blame filename

远程操作

git fetch
git pull
git push
git remote

$ git remote
origin
$ git remote -v
origin    git@github.com:tianqixin/runoob-git-test.git (fetch)
origin    git@github.com:tianqixin/runoob-git-test.git (push)

git remote add

撤销提交

git如何撤销已提交的commit重新提交

删除文件

先删除
git rm -rf 文件名
再提交
Git commit -m 备注
在这里插入图片描述

Git

分支管理

创建分支

创建本地分支
git checkout -b dev 创建dev分支并切换到dev分支
git branch dev2 创建一个叫dev2的分支,不切换
创建本地分支同步到远程仓库,github 上会自动新建与本地同名的分支

git push origin dev1
将本地分支代码同步到远端dev1 分支。

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (master)
$ git checkout -b dev1
Switched to a new branch 'dev1'

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (dev1)
$ ls
README.md  test.txt

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (dev1)
$ touch test1.txt

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (dev1)
$ echo "test dev1 branch">test1.txt

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (dev1)
$ ls
README.md  test.txt  test1.txt

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (dev1)
$ git add .
warning: LF will be replaced by CRLF in test1.txt.
The file will have its original line endings in your working directory.

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (dev1)
$ git commit -m "test"
[dev1 0081f69] test
 1 file changed, 1 insertion(+)
 create mode 100644 test1.txt

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (dev1)
$ git push origin dev1
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 308 bytes | 308.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'dev1' on GitHub by visiting:
remote:      https://github.com/echoyzt/testproject/pull/new/dev1
remote:
To github.com:echoyzt/testproject.git
 * [new branch]      dev1 -> dev1

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (dev1)
$ ls
README.md  test.txt  test1.txt
yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (dev1)
$ git branch -a
* dev1
  master
  remotes/origin/dev1
  remotes/origin/master

切换分支

git checkout 分支名

删除分支

删除本地分支
git branch -d issue001 删除issue001分支
删除远程仓库的分支
git push origin --delete dev1

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (master)
$ git branch -a
* master
  remotes/origin/dev1
  remotes/origin/dev2
  remotes/origin/master

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (master)
$ git push origin --delete dev1
To github.com:echoyzt/testproject.git
 - [deleted]         dev1

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (master)
$ git branch -a
* master
  remotes/origin/dev2
  remotes/origin/master

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (master)
$ git push origin --delete dev2
To github.com:echoyzt/testproject.git
 - [deleted]         dev2

yuzt@SHJQZD210218L MINGW64 /d/gitRepo/testdir (master)
$ git branch -a
* master
  remotes/origin/master

合并分支

git merge dev 合并分支
合并分支时,加上 --no-ff 参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
在这里插入图片描

清除无效的远程追踪分支

git remote prune

版本回退

git reset --hard HEAD^ (回退到上一个版本)
或者 git reset --hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset --hard HEAD~100 )
git reset --hard id (回滚到指定id 版本)
git push -f origin 分支名

git 标签

git 标签使用场景
git tag -a V1.2 -m ‘release 1.2’
-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加标签的注解。
tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起

显示所有tag
git tag
删除tag
git tag -d v1.1
显示详细信息
git show v1.0
获取远程版本
git fetch origin tag V1.2

git 使用场景

单枪匹马

git init
git status
git add 文件名
git add .
git commit -m ‘提交信息’

git 使用常见场景错误解决

1.non-fast-forward

push远程仓库时经常报出下面的错误,导致操作失败
在这里插入图片描述
Git 已经提示我们,先用 git pull 把最新的内容从远程分支(origin/master)拉下来,然后在本地 merge,解决 conflict,再 push。
git pull origin master

2.fatal: refusing to merge unrelated histories

refusing to merge unrelated histories
此项错误是由于本地仓库和远程有不同的开始点,也就是两个仓库没有共同的 commit历史出现的无法提交
在这里插入图片描述

$git pull origin master --allow-unrelated-histories
$ git push -u origin master

3 git reset --hard id 报错unlink of file

在操作git中有时候会提示 Unlink of file ‘…’ failed. Should I try again?
原因是你工作目录有某些文件正在被程序使用,
解决方案不是简单的选择y或者n,而是关闭IDE,让IDE把这些文件释放掉。

4 remote: GitLab: You are not allowed to push code to protected branches on this project.

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值