git常用命令使用和一些报错的总结

最近使用git,发现之前的命令都不太会用了,所以借这个机会把之前学习GitHub时的笔记再温习一下,把常用命令整理下来,方便以后查阅。 关于如何使用GitHub,我这里有个详细笔记GitHub使用详解,在这里只记录常用的命令和遇到的报错。

我们从git的远程仓库克隆开始:

1. 把代码存储到远程仓库的流程

一般,我们是先从远程GitHub.com上建立自己的一个仓库,然后使用命令:

git clone 仓库地址

把远程的仓库克隆下来,仓库地址在这里找:
在这里插入图片描述
看一下克隆结果:
在这里插入图片描述
这样,我们就可以在这个仓库中进行我们的工作了。

2. git的工作区域

我们把远程仓库克隆到本地,我们就可以在本地仓库中创建项目,然后同步到远程上去,那么我们究竟通过什么样的方式去同步呢? 我们先看一下git工作区:
在这里插入图片描述
我们在本地工作的区域叫做工作区,在这里,我们添加编辑修改项目, 然后通过命令:

git add 文件名           # 把文件提交到暂存区

把我们的项目提交到暂存区保存,可以使用命令

git status    # 查看当前文件夹下有哪些文件

如果我们想把暂存区的文件提交到远程仓库上去,需要使用命令:

git commit -m "提交描述"   
git push

这样,我们的项目就从本地仓库提交到了远程的仓库中。

脚下留心:
当然通过上面的操作,也可以直接上传文件夹,但是要注意,GitHub是不认可或者说忽略空文件夹的,如果你想上传文件夹,必须保证上传的文件夹不能是空的,否则会默认跳过去, 一个方法就是,你直接在文件夹里见一个README.md文件,这样就可以了。

3. 修改仓库文件

上面是我们提交一个项目到远程的过程,但是如果我们想改一些文件呢? 那么我们就在本地仓库中进行修改文件,然后再使用

git add 修改的文件
git commit -m "描述"
git push 

这样完成提交。

如果我们想删除某一个文件或者文件夹的时候,我们这样操作:

# 删除文件
git rm 文件名 
# 删除文件夹
git rm -r 文件夹
git commit -m "描述"
git push

这样,我们在本地做出的删除就会同步到远程仓库中。操作基本上差不多。

4 可能会出现的一些报错

4.1 远程修改文件导致两地不同步

在这里插入图片描述
这个操作引起的原因: 你在远程库上添加或者删除了文件,就是用网页版添加或者是删除了文件,但是你的本地库中没有进行变动,当你再次通过本地库进行添加文件的时候,就会报这个错误,原因是你的远程库和你的本地库现在不同步了,你得先让它同步起来。 或者是修改了README.md 也算。使用命令:

git pull --rebase origin master

输入这个命令,这样两边就同步了, 然后就可以接着用本地git去上传文件了。

4.2 The requested URL returned error: 403 Forbidden while accessing

在这里插入图片描述
因为你不是随便一个项目就可以clone下来之后,再push回去的,你得push到你的GitHub中去。
所以需要修改那个隐藏文件.git 中的config选项。 vi表示编辑的意思,是Linux命令,当然可以右击记事本打开进行修改。
当然在使用之前, 可以先用一个密钥和远程的GitHub进行一个连接。
当然在使用之前,可以先用一个密钥和远程的GitHub进行连接:桌面版操作GitHub(这个博客写的挺详细的)

4.3 上传过大文件报错,删掉还保错

在这里插入图片描述
github一般是限制上传文件的大小,不能超过100MB,所以如果上传了大文件,就可能报这个错误。

解决方法是:删除有大文件的commit记录

git rm --cached giant_file(文件名) 
# Stage our giant file for removal, but leave it on disk  
git commit --amend -CHEAD  
git push

注意,不能单纯的光把本地的大文件删掉就完事, 这样提交还是会报错,因为git记录并没有删除。

如果上面这个方法不好使,还有种终极方法:

git fetch -f -p   # 从本地拿到远程最新分支,覆盖本地存放的远程分支
git checkout dev    # 没有分支的可以不用
git reset origin/dev --hard   # 没有分支的git reset origin --hard即可

相当于把本地代码回滚到远端的代码一致;上传到远端代码文件过大时,此种方式比从远端重新拉取方便快捷。 这样本地和远程同步了,然后再删掉大文件重新上传即可。

4.4 git push每次都要输入登录凭据

解决:

git config --global credential.helper store

下一次你再在你的项目中使用

git push

命令的时候,你的登录凭据将会被记住,这样就不用每次push都重新输入一次用户名和密码了。

4.5 error: You have not concluded your merge (MERGE_HEAD exists). git pull拉取代码失败!

$ git push
To ssh://47.95.35.53:2222/php-item/php-test.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://[email protected]:2222/php-item/php-test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
 
$ git pull origin master
error: You have not concluded your merge (MERGE_HEAD exists).
hint: Please, commit your changes before merging.
fatal: Exiting because of unfinished merge.

原因是远程仓库改了东西,没有同步到本地上。

解决办法如下,保留本地的更改:

git merge --abort   //终止合并

git reset --merge   //重新合并

合并后记得一定要提交这个本地的合并

然后在获取线上仓库

git pull        //重新拉取

在这里插入图片描述

4.6 git commit或者git merge的时候,报错说编译器什么的一个奇怪错误

$ git commit
hint: Waiting for your editor to close the file... D:/Sublime Text 3/sublime_text.exe' -n -w: -c: line 0: unexpected EOF while looking for matching `''
D:/Sublime Text 3/sublime_text.exe' -n -w: -c: line 1: syntax error: unexpected end of file
error: There was a problem with the editor 'D:/Sublime Text 3/sublime_text.exe' -n -w'.
Please supply the message using either -m or -F option.

这个原因是每次merge都会打开这个editor让你去填写记录名称,而报错只是找不到editor而已。这种情况一般发生在你卸载了之前的编辑器或者改了位置等造成的。

解决方法, 直接改成vim编译器:

git config --global core.editor vim //设置vim为git默认编辑器

这是目前使用GitHub常用的命令和遇到的一些问题,所以暂且记录这么多,后面如果再遇到新的,依然会更新。

发布了98 篇原创文章 · 获赞 144 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/wuzhongqiang/article/details/104709630