0


git基本操作

工作区:就是你在电脑里能看到的目录。
暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:
在这里插入图片描述

• 图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage/index),标记为 “master” 的是 master 分支所代表的目录树。
• 图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
• 图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。
• 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
• 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
• 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
• 当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。
• 当执行 git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
• 当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

git rm 命令用于删除文件。
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。
git rm 删除文件有以下几种形式:
1、将文件从暂存区和工作区中删除:
git rm
以下实例从暂存区和工作区中删除 runoob.txt 文件:
git rm runoob.txt
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。
强行从暂存区和工作区中删除修改后的 runoob.txt 文件:
git rm -f runoob.txt
如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可:
git rm --cached
以下实例从暂存区中删除 runoob.txt 文件:
git rm --cached runoob.txt
实例
删除 hello.php 文件:
$ git rm hello.php
rm ‘hello.php’
$ ls
README
文件从暂存区域移除,但工作区保留:
$ git rm --cached README
rm ‘README’
$ ls
README
可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:
git rm –r *
进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录。

菜鸟图解:
https://www.runoob.com/w3cnote/git-graphical.html

基本操作:
Git branch 一般用于分支的操作,比如创建分支,查看分支等。

1、git branch

不带参数:列出本地已经存在的分支,并且在当前分支的前面用“*”标记。

2、git branch –r

查看远程版本库分支列表。

3、git branch –a

查看所有分支列表,包括本地和远程。

4、git branch dev

创建名为dev的分支,创建分支时需要是最新的环境,创建分支但依然停留在当前分支。

5、git branch –d dev

删除dev分支,如果在分支中有一些未merge的提交,那么会删除分支失败,此时可以使用git branch –D dev:强制删除dev分支。

6、git branch –vv

可以查看本地分支对应的远程分支

7、git branch –m oldName newName

给分支重命名

Git checkout 操作文件和操作分支

操作文件

1.1、git checkout filename

将文件从暂存区的file版本替换到工作区的file版本,如果暂存区没有,就从版本库中的file版本替换工作区的file版本

1.2、git checkout .

放弃当前目录下的修改

2、操作分支

2.1、git checkout master

将分支切换到master

2.2、git checkout –b master

如果分支存在则只切换分支,若不存在则创建并切换到master分支,repo start是对git checkout –b这个命令的封装,将所有仓库的分支都切换到master,master是分支名。

2.3、 查看帮助

git checkout --help

常用操作:
1.提交了多余的文件xxx:
git rm xxx
git commit --amend
git push origin mybranch

2.撤销git add:

如果是撤销所有的已经add的文件:
git reset HEAD .
如果是撤销某个文件或文件夹:
git reset HEAD -filename

3.撤销git commit

git reset --soft HEAD^

HEAD^的意思是上一个版本,也可以写成HEAD1
如果你进行了2次commit,想都撤回,可以使用HEAD
2
–mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

–soft
不删除工作空间改动代码,撤销commit,不撤销git add .

–hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
修改注释:–amend

4.git restore

工作区文件修改撤销
git restore file

git add到暂存区的文件撤销
git restore --staged

5.新建远程分支:

git checkout -b new_branch
git push origin new_branch #将新建分支推送到远程
git branch --set-upstream-to=origin/new_branch # 将本地分支new_branch 关联到远程分支new_branch

6.删除远程分支:
删除本地分支 git branch -d 本地分支名
删除远程分支 git push origin --delete 远程分支名
推送空分支到远程(删除远程分支另一种实现)git push origin :远程分支

6.把远程分支的更新同步到本地
git remote -v #查看远程仓库是否存在
git remote add platform 远程仓库 #添加远程仓库地址
git pull platform 远程分支:本地分支 #拉取主库指定分支合并
git push origin 本地分支 # 推送到自己的版本库

7.如果对一个代码仓提交多个commit未合并:
仔branch A
git checkout -b B
git commit --hard HEAD^
修改代码,然后提交

7.如果需要把另一个分支的代码推到当前分支:
git cherry-pick commitid
git push --force origin 当前分支

或者直接 git checkout b ;git merge a

8.将远程br_A分支的更新同步到本地br_A分支:
git fetch origin br_A
git pull --rebase platform br_A
git push --force origin br_A

9.解决冲突:主仓 platform 的br_A的代码和本地分支AA合并到主仓的代码有冲突

git pull --rebase platform br_A
去掉多余的内容

git add .

git rebase --continue

git push --force origin AA

10.新建github代码仓并把本地代码推送上去
进入要推送的目录
git init #生成.git
git add .
git commit -m “first commit”
git remote add origin 新建的代码仓地址
git push origin master #推送到默认的master分支

11.添加配置项目
git config --global user.email “”
git config --global user.name “”

如果执行报错:

warning: user.name has multiple values error: cannot overwrite multiple values with a single value Use a regexp, --add or --replace-all to change user.name.

这个错误是指在 Git 中尝试更改用户的名称时,发现该名称有多个值,无法使用单个值覆盖。这通常会发生在使用多个 Git 帐户时。
要解决这个问题,可以使用以下命令检查当前 Git 配置中 user.name 的所有值:

git config --global --get-all user.name
如果输出包含多个名称,请使用下面的命令替换所有名称:

git config --global --replace-all user.name “YOUR_NAME”
如果想为当前的 Git 账户添加一个新的用户名,而不是替换所有现有的用户名,则可以使用 --add 选项:
git config --global --add user.name “YOUR_NAME”
最后,如果想使用正则表达式替换用户名,可以使用 --regexp 选项:
git config --global --regexp --replace-all user.name “^OLD_NAME$” “NEW_NAME”
请注意,这些命令中的 --global 选项将更改全局 Git 配置,如果只想更改当前仓库的 Git 配置,则应省略此选项。

标签: 前端

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

“git基本操作”的评论:

还没有评论