git 笔记(常见命令、常见问题)

git上传步骤

第一步:右击将要上传的文件夹,在右键菜单栏里选择Git Bash Here选项

第二步:在弹出的Git命令窗口中输入git init    (此时生成 .git文件)

第三步:复制gitee仓库的HTTPS链接

第四步:在Git命令窗口中输入git remote add origin+复制出来的仓库的HTTPS链接

 第五步:在Git命令窗口中输入git pull origin master 并在弹出的窗口中输入码云登陆的对应的账                 号和密码  (如果想强推就这步的时候直接 git push -f origin master (这个命令在团队                    开发的时候最好不要用,否则可能会有生命危险))

第六步:输入git add .(.表示所有文件)或者git add + 文件名(作用:将文件保存到缓存区)

第七步:输入git commit -m ‘文件描述’(文件描述的内容随便写)

第八步:输入git push origin master ,将本地仓库推送到远程仓库(如果你不在master分支的                  话呢记得把master换成你那个分支的名字哦)

扫描二维码关注公众号,回复: 16332838 查看本文章

第九步:完成以上操作后即可前往码云查看刚才上传的结果

 git常用命令

git init

git remote add origin+复制出来的仓库的HTTPS链接

git pull origin master

git add .

git commit -m ‘文件描述’

git push origin master

git clean n //这个是清除文件预览

git clean -f //强制清除文件

git fetch

git checkout -a

git checkout origin/master

git status

踩坑合集

(下面都是我自己用来解决过问题的,觉得不错的博客,把他做成合集是为了方便自己日后的查找,原文链接会全部放在最下面

坑 1

git push后出现错误 ![rejected] master -> master(non-fast-forward) error:failed to push some refs to XXX

在这里插入图片描述

本地创建了一个project
并在码云上创建了一个仓库,想要将本地的仓库链接到远程仓库
我用的是如下方法:
git init    初始化本地仓库
git remote add origin XXX     添加远程仓库地址
如果你在这之后就执行
git add -A
git commit -m " "
git push origin master,那么就会出现这个问题(被拒绝),所以在remote add后不要着急git add,一定要git pull origin master,出现这个原因
是因为你在码云创建的仓库有ReadMe文件,而本地没有,造成本地和远程的不同步,
那么有两种方案可以解决
one :
本地没有ReadMe文件,那么就在本地生成一个:

git pull --rebase origin master     本地生成ReadMe文件
git push origin master

two:
那我就强制上传覆盖远程文件,
git push -f origin master
(这个命令在团队开发的时候最好不要用,否则可能会有生命危险)

坑 2

git rebase后出现(master|REBASE 1/1)的解决办法

当没有先使用pull,先直接git add 和git commit 后,使用git push出现下面这个错误的时候


这个报错说明你本地代码和服务的代码有冲突,可以git log 查看本地是git 日志,发现和服务上的不一样,说明在你之前有人提交过代码,服务日志和本地日志不一样。 解决办法是

1,先使用 git pull --rebase 把服务器的代码拉下来

git pull --rebase

然后会看的这样的效果:

 这说明有冲突,我们要先解决冲突

2,解决完冲突在 git add ,然后git status 查看是不是提交的文件已经准备好

这时候它会有提示

git rebase --abort  // 取消合并
git rebase --continue // 继续执行

3,准备好以后我们在 git rebase --continue,继续执行,这样就会合并log,

4,最后我们在提交 git push

坑 3

git push到GitHub的时候遇到! [rejected] master -> master (non-fast-forward)的问题

名为的manage项目操作过程

1、在manage文件夹里打开git,输入git init初始化本地仓库,GitHub创建远程仓库manage

2、以下命令关联本地和远程仓库,*****为我的用户名

    git remote add origin [email protected]:******/manage.git

3、本地已经有项目代码了在add和commit之后,想要push到远程仓库

     git push origin master

     此时报错 :

     ! [rejected] master -> master (non-fast forward)    

      …………    

      …………

   在网上搜了好久,输入了各种无效和错误的命令后,终于找到了解决办法:

  1、git pull origin master --allow-unrelated-histories //把远程仓库和本地同步,消除差异

  2、重新add和commit相应文件

  3、git push origin master

  4、此时就能够上传成功了

坑 4

Git使用之(error: pathspec 'master' did not match any file(s) known to git)

一 问题概述

今天在工作中遇到一个问题,使用很久的一个local git repository,里面只有develop分支,那么现在想将分支切换到master分支,问题来了,在切换到master分支时:

git checkout master

提示如下错误:

error: pathspec 'master' did not match any file(s) known to git

二 问题解决

1.首先我们看一下分支情况:

git branch -a
* develop
  remotes/composer/develop
  remotes/composer/feature/194
  remotes/composer/feature/198
  remotes/composer/feature/199
  remotes/composer/feature/200
  remotes/composer/master
  remotes/origin/HEAD -> origin/develop
  remotes/origin/develop
  remotes/origin/feature/194
  remotes/origin/feature/198
  remotes/origin/feature/199
  remotes/origin/feature/200
  remotes/origin/master

2.如果没有看到你想要的分支,先获取所有分支:

git fetch

3.切换到远程master分支:

git checkout origin/master

提示如下:

Note: checking out 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 4beea49... Merge branch 'develop' into 'master'

执行git branch,效果如下:

* (detached from origin/master)
  develop

5.现在我们可以从当前的detached分支切换并新建分支,可以理解为即将新创建的分支是由当前detached 分支出来的(为了为后续做准备,此处新分支就叫做master):

git checkout -b master

5.这时我们使用git pull会提示如下错误:

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=<remote>/<branch> master

说明我们新建立的master分支还不能和远程的master分支建立追踪关系(虽然表面我们看似已经建立了master分支,但git不认为它和远程的master有任何关系),当然,您可以按照上面提示那样,通过git pull指定远程的分支和本地的分支来进行更新,但此处我们使用提示中的第二种方式,建立本地分支和远程分支的追踪关系:

git branch -u origin/master master

6.这时我们执行git pull来看看什么反馈:

Already up-to-date.

总结:其实git的人性化做的非常的完备,有时我们不要惧怕提示,而要从中找到问题的解决方法,并时常利用好:

man git
man git branch

and so forth!

Bye!

坑 5 

Git-命令行-拯救“Your local changes to the following files would be overwritten by checkout”

事故现场

有些时候,当我们使用 git checkout <branchname>命令切换分支的时候,有时会切换失败,然后出现以下的提示信息:

这里写图片描述

提示信息说的很清楚,
当前分支有未跟踪的文件,checkout 命令会覆盖它们,请缓存( stash )或者提交( commit )。

先说解决方法吧

这个时候,你有两种选择:

###1.未跟踪文件的内容改动很重要,保存修改

//第一种方式 存到暂存区
git add.
git stash 
//取出的时候使用 
git stash pop

//第二种方式 发起一个commit 存到提交历史
git add.
git commit -m "commit message"

###2.未跟踪文件的内容改动不重要,放弃修改

这个有两种办法,清除修改和强制切换分支

推荐做法:清除未跟踪文件

git clean n  //这个是清除文件预览
git clean -f //强制清除文件

这里写图片描述

强制切换分支

强制切换分支命令如下,结果同提示说的那样,会直接覆盖未跟踪的文件。这个方式我觉得很是粗暴,我们日常切换的时候,还是不要使用 -f 强制切换,没有覆盖提示,很容易发生文件修改丢失,但是我们自己不知道。

git checkout -f <branch> 

这里写图片描述

分析一下原因

git 的本地版本管理有三个部分

git 的本地版本管理有三个部分

名称                                                   说明
工作区(Working Directory)    我们直接编辑的文件部分
暂存区(Staged Snapshot)    文件执行 git add .后存的地方
版本库区 (Commit History)    文件执行 git commit .后存的地方
它们三个的关系是这样样子的:

图片来自网络

(说明:图片非原创,来自图解Git )

当我们执行 checkout 操作的时候,git 会检查工作区是否存在未跟踪文件,这就是我们上面当执行 checkout 的时候出现错误提示的原因。
 

坑 6

you need to resolve your current index first 解决办法

 从一个分支A切换到另一个分支B后,对切换后的B分支进行pull操作,因为pull操作实际上包含了fetch+merge操作,在执行 merge操作时,由于很长时间没有对B分支执行过pull/merge操作,本地的B分支库与remote中的B分支库中的差异很大(且这些差异是其他 同事开发的文件),merge时产生冲突,使得B分支的状态为merging,其实是指merge失败,还停留在merge状态,也不能执行pull操 作。这时没有解决冲突,而是从B分支上执行checkout/switchto操作,试图再切换其他分支时,报:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片

    …….java : needs merge  
    …….java : needs merge  
    …….java : needs merge  
    error : you need to resolve your current index first  

的错,google了半天,终于在stackoverflow上找到了答案,大题意思是:merge失败,有conflicts没解决,可以:

1、解决conflicts后再次执行merge;

2、回退到merge前

恩,既然merge冲突是其他同事的文件,我不需要去resolve conflicts,那就退回merge前吧,单纯的改我的文件再push吧,执行以下代码:

    git reset --merge  

搞定!

顺便贴下stackoverflow上的链接:

http://stackoverflow.com/questions/6006737/git-merge-errors

坑 7

出现Incorrect username or password ( access token )提示

在这里插入图片描述

分析:出现的原因是因为在第五步中弹出窗口中输入码云错误的登陆的账号和密码导致

处理办法:前往控制面板>用户管理>凭据管理器下面的Windows 凭据进行修改(由于我此处是Win 10系统,可能会存在差异)

在这里插入图片描述

坑 8

出现GE007: Your push would publish a private email address提示

在这里插入图片描述

 处理办法:前往gitee个人首页右上角选择设置>多邮箱管理>取消禁止命令行推送暴露个人邮箱勾选

在这里插入图片描述

 原文内容链接合集:



(119条消息) git push后出现错误 ![rejected] master -> master(non-fast-forward) error:failed to push some refs to XXX_longfan的博客-CSDN博客

(119条消息) git rebase后出现(master|REBASE 1/1)的解决办法_就是个名称的博客-CSDN博客

(119条消息) git push到GitHub的时候遇到! [rejected] master -> master (non-fast-forward)的问题_xieneng2004的博客-CSDN博客

 (119条消息) Git使用之(pathspec master did not match any file(s) known to git)_灰化肥发黑会挥发-CSDN博客

 (119条消息) Git-命令行-拯救“Your local changes to the following files would be overwritten by checkout”_段浅浅的博客-CSDN博客

 (119条消息) you need to resolve your current index first 解决办法_wenwenxiong的专栏-CSDN博客

 (119条消息) git上传步骤_楠啊#的博客-CSDN博客_git上传

猜你喜欢

转载自blog.csdn.net/weixin_51867622/article/details/123098488