前置条件: 已经正确的安装完git
GIT常用命令
配置全局的邮件地址
git config --global user.email "example@163.com"
配置全局的用户名
git config --global user.name "you_username"
1.新建项目并向远程仓库提交
新建一个目录并初始化目录:
mkdir demo
git init
新建一个文件并提交到暂存区
touch readme.txt
git add readme.txt
提交本次修改的内容
git commit -m 'commit msg'
注意此时默认的分支是 master 分支,可以使用下面的命令查看当前分支名称,带星号的就是当前分支
git branch
切换到常用的开发分支,下面这条命令会创建一个dev分支,并直接切换到dev分支
git checkout -b dev
以上操作都是在本地进行的,我们需要把代码提交到远程的git仓库
首先需要和远程的代码仓库建立关联关系,后面的URL路径是你要使用的仓库路径,
(PS:我这里的路径是使用GItlab搭建的内网私服地址)
git remote add origin http://192.168.80.132:8085/root/test_commit.git
最后再提交你的分支
git push -u origin dev
执行完上述命令后,需要输入正确的git的登录用户名和密码,否则会出现认证失败的问题,提交自然就失败了。出现和下面类似的打印信息就代表向远程仓库提交成功了,可以登录远程仓库验证下。
2.从远程仓库下载代码到本地
很简单,一行命令就搞定了
git clone http://192.168.80.132:8085/root/test_commit.git
然后可以在本地项目中进行修改,修改完后再通过git add ,git commit等命令提交代码,最后再通过git push 向远程仓库推送代码。
PS:这里push代码的时候就不用再执行git remote关联远程代码了,因为在clone时已经关联上了,除非你想把这个代码提交到别的地方去
3.分支合并
合并两分支很简单,例如 合并dev代码到master代码中并禁用FastForad,可使用如下命令即可完成
首先切换到master分支
git checkout master
最后合并分支
git merge --no-ff -m "merge with no-ff" dev
4.处理代码冲突
远程代码与本地代码库存在冲突
背景:
程序员1修改了readme.txt内容为
这是开发人员1提交的文件内容
程序员1把代码提交了,一切正常
程序员2也在本地修改了readme.txt内容为
这是开发人员2提交的代码
因为这是两个程序员是相互独立工作的,且负责的模块不同,所以经常会出现这样情况
程序2在本地commit一切正常,当向远程push的时候就会出现问题了,如下所示
通过提示信息,git很明确的告诉我们,我们本地的代码不完整,即远程的代码库存在的文件数据,我们本地文件库没有,所以根据提示使用pull先拉取远程的资源。
通过提示信息,Git同样很明确的告诉我们readme.txt文件存在冲突,这时我们再查看readme.txt文件内容
然后我们编辑radme.txt文件,手动处理冲突
这里代码冲突已经处理完了,接下来就该把代码进行再次提交了
git add readme.txt
git commit -m '冲突已经手动处理成功了'
git push origin dev
这次提交终于成功了,然后可以在远程仓库中查看提交的readme.txt文件内容
常见问题及解决方案:
1 问题描述:
$ git push origin master
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://192.168.102.68:8085/project/idea_git.git/'
解决方案
出现这种问题基本上都是由于用户名密码重新修改了
git config --system --unset credential.helper
2.问题描述
在合并分支的时候,比如执行git pull(git fetch + git merge)或者git merge ,出现以下异常信息
Error pulling origin: error: Your local changes to the following files would be overwritten by merge
解决方案:
特别提醒:在这行下面这条命令之前,强烈推荐将当前的代码保存了,否则删除命令一旦执行,被删除的代码将不能被找回,请一定小心留意执行
git clean -d -fx