git是一个日常使用最多的版本控制工具,对于个人开发者来说,掌握基本使用是非常重要的。本篇将简单介绍git的基本使用指令,以及个人在开发中遇到一些有关git的问题。
Git基本使用
1. 初始化版本库
csharp
git init
到你的项目根目录中去,随便打开一个命令行窗口(cmd,bash,powershell都行),本地先做一个初始化。这条指令执行之后,会在当前目录下产生一个.git的文件夹(默认情况下是隐藏的),里头主要负责记录你的文件修改和版本控制信息的,不要轻易去改动它。
2.代码更新
sql
git add <filename>
git add .
git commit -m "msg"
其实这样就已经可以开始正常使用git了,虽然目前还局限于本地。挨个说说吧,git add
是将本次的更新的添加到本地仓库的缓存,如果不想将此次更新全部都添加,那么就可以在后面加上文件名(后缀也添上)。
git add
还不算将更新提交到了代码仓库,要想添加到本地仓库,我们还需要使用git commit
命令。-m后面需要跟着本次提交所附带的文字注释,比如:
csharp
git add . #全部提交
git commit -m "第一版"
3.连接远程
接下来我们终于就想要提交到远程仓库(github,gitee等)了,我们首先需要连接到远程仓库(确保在此之前,你已经在github/gitee上建了一个空仓库)
xml
git remote add <name> <address>
name
是为你目前的项目取一个git语境下的别名(从这个语境出发,我们之后会讲到分支branch
),address
就是远程仓库的地址(主要的代码仓库中心通常会提供webURL,也就是xxx.git),比如:
bash
git remote add origin https://github.com/JackVictor/git_basis.git
如果想查看你已经配置的远程仓库服务器,可以运行 git remote
命令。 它会列出你指定的每一个 远程服务器的简写。你也可以指定选项 -v
,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。
bash
$ git remote -v
origin https://github.com/JackVictor/git_basis.git (fetch)
origin https://github.com/JackVictor/git_basis.git (push)
add了,commit了,连接了远程仓库,那么现在我们就可以将本地的代码更新push
到远程了吗?还不能,我们还需要配置自己在远程仓库的账号,你可以做自己的项目觉得没什么,但是负责开源项目的人可不希望有个pusher是个无名氏/透明人(你也做不到这样)!
csharp
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com #两个选其一就好
# 之后会让你输密码
连接成功之后,我们最好再进行一条指令,目前 它旨在保证在初始状态远程仓库的代码和本地的代码,版本都是一致的最新状态。
bash
git pull #主要功能是:将远程版本库的修改并入当前分支。 如果当前分支落后于远程分支,那么默认情况下,它将快速合并当前分支以匹配远程分支。
好了,接下来我们终于可以push
了。
xml
git push <name> <branch>
name
就是在git语境下为你当前的项目取的别名,branch
就是要推送的目标分支。如果提示报错,不妨加上--set-upstream
可选项:
csharp
git push --set-upstream origin master #例子。将当前的版本更新推送到origin项目当中的master分支
Git的个人排错日志
push之前先pull以保证代码提交的时序性
需要注意的是,在你上次pull代码之后到你现在要push代码之前,如果有其他人向你的远程仓库push了代码,那么当你在push的时候就要先用pull代码重新把远程仓库的代码拉下来,然后重新git add 、git commit后才能push。
事故现场
git pull 报错:error: Pulling is not possible because you have unmerged files.
报错:
$ git pull
error: Pulling is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
翻译过来:
错误:无法提取,因为您有未合并的文件。
提示:在工作树中修复它们,然后使用"git add/rm<file>"
提示:根据需要标记解决方案并提交。
致命:由于未解决的冲突而退出。
解决方法:
提示了先提交
sql
git add.git commit -m "xxx"
git pull origin master
git add .
git commit -m "xxx"
git push origin master