Git命令行操作以及报错信息解决办法(持续更新中。。。)

1:命令行操作

1.1:查看当前所在分支:git branch -a 或者 -v

1.2 : 如果存在新分支,而使用上述命令未显示,使用即可:git fetch

1.3:切换分支:git checkout branchname

1.4:解决git pull 每次都需要输入用户名密码的问题: git config --global credential.helper store(设置完还需输入1次,下次生效)

1.5:创建分支 git branch branchname

1.6:删除分支 git branch -d branchname 或者 git branch -D branchname(强制删除)

1.7:合并分支:如果要将开发中的分支(develop),合并到稳定分支(master),首先切换的master分支:git checkout master。然后执行合并操作:git merge develop。如果有冲突,会提示你,调用git status查看冲突文件。解决冲突,然后调用git addgit rm将解决后的文件暂存。所有冲突解决后,git commit 提交更改。

1.8:暂存当前分支:git stash  比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
基础命令:
$git stash
$do some work
$git stash pop

1.9:移除未被跟踪的文件 在利用 git 工作时,工程目录下经常会出现一些未跟踪文件,虽然 git 支持通过 .gitingore 文件添加一些忽略文件类型和文件目录。但有时需要清理一些临时文件和自动生成的文件,手动删除显得太麻烦,这时你可以利用 git clean 命令来帮你完成这项操作。git clean 命令支持以下参数:

git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>...

  1. -d # 删除未跟踪目录以及目录下的文件,如果目录下包含其他git仓库文件,并不会删除(-dff可以删除)。

  2. -f # 如果 git cofig 下的 clean.requireForce 为true,那么clean操作需要-f(--force)来强制执行。

  3. -i # 进入交互模式

  4. -n # 查看将要被删除的文件,并不实际删除文件 

  5. 在删除前先查看有哪些文件将被删除运行:git clean -n

  6. 想删除当前工作目录下的未跟踪文件,但不删除文件夹运行(如果 clean.requireForce 为 false 可以不加 -f 选项):git clean -f

  7. 想删除当前工作目录下的未跟踪文件以及文件夹运行:git clean -df

2.0:git忽略某些文件提交

在项目中有些配置文件不需要提交,但是有同学在后面开发中发现在.igonore文件中无论如何都无法忽略某些文件的提交。原因在这里:

 已经维护起来的文件,即使加上了gitignore,也无济于事。----

那么如何解决呢?方式如下

git update-index --assume-unchanged   要忽略的文件夹/文件夹下文件名

比如我要忽略项目下.idea文件夹下所有xml文件,idea下都是xml文件(我用的webstorm):

git update-index --assume-unchanged   .idea/*.xml

如果要重新恢复提交,使用如下命令:

git update-index --assume-unchanged   .idea/*.xml

这样每次提交就不会提交idea下的文件了。

进阶

git stash save "work in progress for foo feature"

当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,

git stash list’ 命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash clear’来将栈清空。

 

 

git stash          # save uncommitted changes
# pull, edit, etc.
git stash list     # list stashed changes in this git
git show stash@{0} # see the last stash 
git stash pop      # apply last stash and remove it from the list

git stash --help   # for more info

 

2:报错信息:

 

 

2.1:error: Your local changes to the following files would be overwritten by merge:

                            protected/config/main.php

                            Please, commit your changes or stash them before you can merge.

解决:如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候,

在发布这个配置文件的时候,会发生代码冲,如果希望保留生产服务器上所做的改动,仅仅并入新配置项,

git stash

git pull

git stash pop

然后可以使用git diff -w +文件名 来确认代码自动合并的情况.

如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:

git reset --hard

 

git pull

 

2.2 git切换分支报错:error: pathspec 'origin/XXX' did not match any file(s) known to git.

项目上有一个分支test,使用git branch -a看不到该远程分支,直接使用命令git checkout test报错

解决方法: 

 

1、执行命令git fetch取回所有分支的更新

2、执行git branch -a可以看到test分支(已经更新分支信息)

3、切换分支git checkout test

2.3  一般解决冲突的步骤是:

  1. 先本地直接提交代码:git push origin master
  2. 如果别人在自己之前提交了修改,git会提示push失败,需要先pull远程代码:git pull origin/master (拉取远程仓库进行自动合并)
    1. 如果能自动合并,git会提示auto merge成功,这时可以直接git push origin master
    2. 如果不能自动merge,git会提示auto merge失败,需要手动解决冲突:
      1. git status 查看冲突情况  或者使用git diff 直接查看冲突代码
      2. 修改冲突
      3. git status 查看冲突解决情况
      4. git add .
      5. git commit -m '解决冲突的注释说明'
      6. git push origin master



作者:Doing
链接:https://www.zhihu.com/question/21215715/answer/201900253
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值