关于git 的一些常见操作

本文详细介绍了Git的基本操作,包括查看提交历史、重命名、移动文件、分支管理、版本回退、标签使用及冲突解决。强调了`gitlog`、`gitreset`、`gitcheckout`、`gitmerge`等关键命令,并提供了应对大小写更改问题的解决方案。此外,还讲解了如何处理合并错误、未提交的合并撤销、密码更改后的推送问题以及在不同分支间切换的策略。
摘要由CSDN通过智能技术生成

git log 以后如何返回主界面  ??

(直接按q)清理屏幕
  clear

对于新建文件,需要使用git add 命令加入到暂存区进行跟踪,而对于已经存在的文件,只做修改,可以直接git commit,
它包含了git add 操作

----------------------------------------------------------------------------------------------------------

git常规操作
1.重命名 

  git mv home.html demo2.html
 (注意:home.html为改动之前的文件,demo2.html是改动以后的文件。中间空格)

2 移动文件到文件夹并重命名

  git mv home.html home/index.html
 移动home.html打home文件夹并且更改名称为index.html
  (注意:home.html为原文件,home为需移动到的文件夹。index.html为最后更改的名称)

3 查看某个文件的历次提交信息
查看home文件夹下demo.html页面的历次提交信息
git log -p home/demo.html

git log --graph --pretty=format:"%h %s" (以更加简洁的方式只展示hash和内容)
        git log和git reflog的区别:
如果我们远程有三次记录,分别是a,b,c,因为某些原因需要回归到b,此时通过git log得到的记录只有b,a,而如果某一天我们需要再次更新到c,
此时通过git reflog就可以保留之前的记录,此时就能看到c的记录

4 误操作。希望回到上次的状态
  git checkout --home/index.html
 (还原home文件夹下的inde.html页面的上一次修改,只回到上一次的提交状态)

注意:1 checkout后面一定要加 --
          2 checkout -- 操作只针对还没有git add 的文件,如果已经git add了,则无法实现
回撤。也就是已经git add了的文件。如果再通过git checkout -- xx.filename 则在编辑器中
无法实现还原
               可以通过git reset HEAD home/home.html(先从暂存区撤销对文件的追踪)
               再执行 git checkout --home/home.html 即可还原

注意:git reset HEAD只能让暂存区保存恢复到之前的状态,但是工作区的内容是不会回到之前的状态的,所以需要手动通过 git checkout -- filename(git checkout .则是针对所有修改的文件);

当然:有一个简单地办法。git reset --hard HEAD (添加--hard,则可以实现工作区。暂存区内容同步,避免手动再执行git checkout 的操作)
5 版本回退
 回退一个版本  git reset  --hard HEAD^
 回退二个版本  git reset  --hard HEAD^^     
^表示回退到第几个版本,一个^代表一个版本  

     回退到某个版本
 (1)  git log ---- 获取某个版本的id值
 (2)git reset  --hard HEAD e3f2123c3
  只把某个文件退回到某个版本
  (1) git log  ---- 获取某个版本的id值
(2) git checkout e3f2123c3 --home/index.html   (把home文件夹下的index.html回退到e3f2123c3版本,其他不变)

6 查看当前git配置信息:
   比如git仓库地址,开发者信息等
   git config --local --list 即可查看

7 本地新建一个分支并和远程分支相关联
  git checkout -b test remotes/origin/test

(注:如果远程存在某个分支,本地想要跟踪该分支,可以直接通过git checkout  originbranchname 

   比如:git  checkout dev  它表示本地新建了一个dev分支并且和远程相关联


——————————————————————————————————-————
分支管理

新建一个分支             git branch dev
查看分支                    git branch 
切换分支                    git checkout dev   (切换到dev分支 )
删除分支                    git branch -d dev  (删除dev分支,注意。如果本身在dev分支上,无法删除当前的分支,也就是dev )
                                  git branch -D dev (强制删除dev分支。如果我们执行了git add 和git commit操作。是无法删除当前分支的。如果要强制删除,则使用 git branch -D dev命令)
创建分支并且切换到当前分支  git checkout -b dev (创建一个dev分支并且切换到dev上)
删除远程分支              git push origin --delete dev (删除远程分支dev)

合并分支:
   需求:dev合并到master分支
   步骤(1)切换到master分支   git checkout master   (确保成功切换可以通过git branch查看)
            (2) git merge dev (在主分支上合并dev分支)

——————————————————————————————————————
关于标签
比如我们想给你某次重大改进做一个便签
(1)git tag v1.0 (给当前提交的版本添加一个v1.0的标签),
  (2)然后我们可以通过git tag查看标签是否新建成功
  如果我们想给某一次的提交添加标签。我们可以先找到其版本号然后再git tag v.001( v.0001为自定义的标签名称)
  如果我们想删除某个标签。则可以执行 git tag -d  v.001(v.001 为要删除的某个标签)
  做了修改我们想把标签推送到远程仓库,则可以执行 git push origin (默认主机) v1.0 (把 v1.0的标签推送到远程仓库origin )

_______________________________________________________________________________________________

8 本地新建分支并且同步远程分支
   比如本地新建一个pre分支,同步提交代码到远程pre分支注:此时远程并无pre分支
   操作步骤:
   (1)git branch pre  (本地新建一个分支pre,此时远程无pre分支)
   (2) git add .
     (3)  git commit -m "xxx"
     (4) git push origin pre (此时本地pre分支内容添加到了远程pre分支同时远程pre新建了一个pre分支)

9 本地分支和远程关联
     以pre分支为例
   (1)先git pull 
   (2)git branch -a 查看远程分支的名称
  (比如远程分支形如:
        remotes/origin/dev
        remotes/origin/master
        remote/origin/test
        remote/origin/pre
      )
   (3) git branch --set-upstream-to=remotes/origim/pre(此处名称为以上远程分支名称)

.gitignore
常见配置说明

 .txt                  忽略所有.txt文件
 !a.txt             除了a.txt,其他.txt文件都被忽略
 /nodemodules          忽略nodemodules文件夹
 /nodemodules /index.js         只忽略/nodemodules /index.js  下index.js文件

------------------------------------------------------------------------------------------------------------------------

1 分支合并错了怎么办?

案例:

 现在有四个分支 a,dev,prev,master,a更改了内容提交到了远程分支origin/a。正常流程应该是切换到dev分支,然后把a分支合并过来。结果不小心merge的是prev分支。解决办法就是:

 (1)在dev分支上执行 git reflog,找到dev分支最近的一次提交。得到hash版本号。如下图:

  

   (2) 找到版本号以后执行git reset --hard 61dd638(版本号)

 (3)再执行git pull 拉取远程dev分支的代码、这时候dev分支的内容就摒弃了合并的代码回到干净的状态

 (4)再在dev分支上merge a分支执行正常操作即可

2 合并分支以后,还未提交。发现合并以后改动太多,一团糟,不想合并了。回到默认状态咋么处理?

比如我们有个开发分支a,开发完以后合并到dev分支。合并以后发现一团糟。想让dev恢复到未合并之前的状态。如何处理?

直接   git reset --hard HEAD

3 如果某次commit以后发现有个小的点要改动或者遗漏了某个文件又不想在commit一次,可以通过git commit --amend --no-edit来实现。如下

第一次修改 执行git add . git commit -m"修改了文件"

此时发现有代码有问题。执行如下操作。

(1) 修改好文件

(2)执行 git add .

(3) git commit  --amend-no-edit 

(4)git push (统一提交)

注意。git commit --amend只针对commit有效。如果第一次修改已经git push到远程仓库则git commit --amend无效

4 更改了gitlab/gitte/github的密码。导致push时报错,无权限如何处理?

remote: [session-ac41b0ad] sean@qq.com: Incorrect username or password (access token)
fatal: Authentication failed for 'https://gitee.com/xxx/shopmall.git/'

解决办法:在windows中搜索凭证,选择凭证管理器。选择windwos凭据,找到对应的远程仓库比如github、gitte、gitlab,然后点击编辑。输入最新的密码确定即可。再次push,成功

5 如果a分支开发到一半结果要去更改其他的分支内容如何处理?

(1) 把内容通过git add .或者git commit 提交 (git stash只针对工作区和暂存区有效)

(2)git stash (这步操作会把更改和新增的内容存到内存中)

(3) 其他分支修改好以后通过git checkout a切换到a分支

(4)通过git stash pop (或者git stash apply)就可以把之前修改的内容重新赋值到a分支上。也可以通过这种方式把stash暂存的内容通过git stash pop(apply)应用到其他分支上。

5 关于大小写更改git不会跟踪问题

git默认不会对某个单词大小写的更改进行对比,如果我们更改的文件刚好是大小写。这时候需要通过这个命令

git config core.ignorecase true -g 来进行设置

还有一种场景切换分支出现错误:The following untracked working tree files would be overwritten by checkout也可以尝试用这个命令来解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值