最新动态
Git常见问题解决
2025-01-01 17:50
1. pull时出现合并冲突

错误的原因是以前pull下来的代码不能自动合并而导致的,必须先撤销合并在pull。

1) 撤销合并

git merge –abort [Since git version 1.7.4]

git reset –merge [prior git versions]

2) 解决冲突.

3) add and commit the merge.

4) git pull now should work fine.

2. pull文件时和本地文件冲突

在没有保存本地文件修改下执行pull命令时,git会提示使用stash或者commit命令,也就是有两种解决方案。第一就是先add然后commit,最后执行pull,有冲突就解决。另一种就是使用stash命令。

1) 先将本地修改存储起来

使用用git stash list可以看到保存的信息

2) 执行pull命令

3) 还原暂存的内容

系统提示如下类似的信息

意思就是系统自动合并修改的内容,但是其中有冲突,需要解决其中的冲突。

4) 解决文件中冲突的的部分

打开文件解决冲突。解决完成之后,就可以正常的提交了。

3. push被拒绝

原因是没有同步远程的master,所以我们需要先同步一下

1) 首先pull一下

2) 如果有冲突就解决冲突并提交,最后push即可。

3) 如果没有冲突那么直接进行push即可。

4. push过程中错误

原因是:默认 Git 设置 http post 的缓存为 1MB,使用命令将git的缓存设为500M

再尝试push操作,问题解决,部署成功

打开项目中隐藏的.git文件夹,找到config配置文件,在后天添加如下配置

5. 从detached HEAD状态解救出来

在处于游离状态的时候,使用 git status命令查看的时候,将不会看到任何的创建的本地分支

1) 创建一个临时分支

2) 切换回工作分支,并合并刚刚新建的分支

3) 最后删掉之前创建的分支

6. 撤销文件修改
  • git checkout – file;撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区。

  • git reset HEAD – file;清空add命令向暂存区提交的关于file文件的修改(Ustage;这个命令仅改变暂存区,并不改变工作区。

  • git reset –mixed;此为默认方式,不带任何参数的git reset,就是这种方式,它回退到某个版本,只保留源码,回退commit和stage信息。

  • git reset –soft;回退到某个版本, 只回退了commit的信息,不会恢复stage(如果还要提交,直接commit即可)。

  • git reset –hard;彻底回退到某个版本, 本地的源码也会变为上一个版本的内容。

7. 使用.gitattributes

开发时我们将代码从开发分支合并到测试分支,有时并不希望把配置文件同时被和并进来,我们可以使用.gitattributes文件在合并时忽略某些文件,使用.gitattributes来告诉git对项目特定的文件使用不同的merge strategies,一个.gitattributes文件如下

要想使.gitattributes有效,使用前应做如下设置

8. reset与revert区别

• git reset是直接删除指定的commit,把HEAD向后移动了一下

• git revert是一次新的特殊的commit,HEAD继续前进,本质和普通add commit一样,仅仅是commit内容很特殊:提交的内容是与前面普通commit文本变化的反操作。

由于reset方式HEAD指针后移,推送到远端时需要有强制更新权限或者删除分支权限。

8. 关于历史记录

1) 修改历史提交记录

该命令与下面的语句等价

ORIG_HEAD,用于指向前一个操作状态,每次的commit或者pull或者reset,git 都会把老的HEAD拷贝到.git/ORIG_HEAD,通过对ORIG_HEAD的引用可 以指向前一次的操作状态

2) Git reset –soft HEAD~5这个命令,把这5条commit当做一次提交。这对于重塑历史非常有用。

3) 修改提交树

  • 使用rebase

Rebase命令可以把已存在的提交,放到重新开始的一个分支上。Git rebase master 将当前所在分支的提交放到master分支上。Rebase命令能够让你优化仓库历史的清晰度。

执行该命令会在终端出现一个交互页面(vim的编辑窗口,我们将第2,3行pick改为squash,这个意义为将最后三次的提交压缩到倒数第三次的提交。

然后我们保存退出,git会一个一个压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。

直到三次压缩完成后,提交到远程仓库。

  • 使用cherry-pick

git cherry-pick C2 C4

执行上面的命令,Git 就将被C2 C4两次提交抓过来放到当前分支下了。

    以上就是本篇文章【Git常见问题解决】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/quote/17764.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站https://sicmodule.kub2b.com/mobile/,查看更多   
发表评论
0评