描述
本文如题目所示,将总结git常用命令,大部分大家其实都很熟悉了,只不过写在这里总结一下。
接下来将按照使用git时的具体情况划分:
- 第一次创建仓库
- 使用远程仓库
- 提交修改
- 修改冲突
第一次创建仓库
- 在github或者gitlab上建立一个新的仓库,然后找到仓库地址
- 在自己本地建立一个文件夹,cd进入文件夹
解决命令
git init
git remote add <远端仓库名字> <远端仓库网址>
git add <更改的文件>
git commit -m "提交描述"
git push <远端仓库名字> master
使用远程仓库
来一句最简单的,在你需要代码的位置执行
解决命令
git clone <远端仓库网址>
提交修改
解决命令
git add <更改的文件>
git commit -m "提交描述"
git pull <远端仓库名字> master
git push <远端仓库名字> master
注意:
- 如果你没有为远端库改名的话,远端仓库名字为origin
改名命令
解决命令
git remote rename origin <你想改的名字>
- 想要提交全部更改的命令
解决命令
git add *
修改冲突
情况1
比如说我有两台电脑,一台Mac,一台Ubuntu,我们的远程仓库都有一个1.cpp
Ubuntu对1.cpp进行了更改并push到了github上
那么此时如果Mac对1.cpp再进行更改,在pull命令时会有冲突
解决命令
git add 1.cpp
git commit -m "add include string"
git pull github master
Mac提示我
Auto-merging 1.cpp
CONFLICT (content): Merge conflict in 1.cpp
Automatic merge failed; fix conflicts and then commit the result.
1.cpp中这时会出现HEAD字样:
<<<<<<< HEAD
#include <string>
=======
int main(int argc, char** argv){
return 1;
}
>>>>>>> 747c4214202073e72e0d2984690df9f2a8253361
这其中
#include <string> 这个是我Mac上的修改
而github远端的版本是
int main(int argc, char** argv){
return 1;
}
解决命令
- 手动修改出现冲突的文件,进行你想保留的删改
git add <你手动合并的文件>
git commit -m "merge"
git pull github master
git push github master
情况2
紧接着情况1所做的操作,我现在手动merge了1.cpp,并且完成了push
随后我使用Ubuntu电脑再次更改了1.cpp,执行命令
解决命令
git add 1.cpp
git commit -m "Ubuntu modify"
git pull github master
这时Ubuntu提示我(不出意外的话,除了一些路径不同,你应该和我一样)
GNU nano 2.5.3 File /home/..../.git/MERGE_MSG
Merge branch 'master' of https://github.com/.....
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit
解释:
[原话]请输入一条提交消息来解释为什么需要进行此合并,特别是在将更新的上游合并到主题分支的情况下。
[翻译]远程github上已经被更新过了(之前情况1中Mac更新的),你得解释一下为什么要把远程库和你现在的分支合并
解决命令
- 你可以更改提示中的话(我一般不改,改的话键盘随便输入就行),如果你不更改,这次合并的提交信息就是
Merge branch 'master' of https://github.com/.....
- 同时按下键盘crtl+x(终端下面也是有按键提示的)会退出。但如果你更改了什么的话系统提示
Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES)?
Y Yes
N No ^C Cancel
- 保存更改请你输入y,然后回车(输入回车代表不更改文件名)
解决命令
以上的情况是由于git使用了nano编辑器。如果使用nano编辑器不舒服的话,更改nano编辑器为vim可以这么做
gedit ~/.gitconfig
然后在文件中添加
[core]
editor = vim
误删文件
如果github上的是1.cpp文件,你本地的文件是1.cpp和2.cpp
如果你执行add命令时只添加了1.cpp
git add 1.cpp
git commit -m "XXX"
git pull github master
你会发现你刚才的2.cpp文件会消失