Git命令提交项目代码

Posted Never be the same

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git命令提交项目代码相关的知识,希望对你有一定的参考价值。

Git客户端安装

今天就结合`GitHub`,通过`Git`命令,来了解如何实现开源代码库以及版本控制

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管所以我们需要下载一个Git客户端软件,用来执行各种指令

Git下载地址https://git-scm.com/

下载完毕后,配置`path`环境变量,`E:\develop\git\Git\bin`(我本机的在E盘下)

`doc`命令行窗口输入`git`命令,如果出现如下的信息,说明安装成功,

[html] view plain copy
 
  1. C:\Users\67334>git  
  2. usage: git [--version] [--help] [-C <path>] [-c name=value]  
  3.            [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]  
  4.            [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]  
  5.            [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]  
  6.            <command> [<args>]  
  7.   
  8. These are common Git commands used in various situations:  

点击鼠标右键,菜单栏会出现 `Git GUI` 和 `Git Bash`GUI: Graphical User Interface(用户图形界面)Bash:是Windows下的命令行工具

技术分享图片

版本存储仓库:

[html] view plain copy
 
  1. 公共:  
  2.     - github   
  3.     - 码云  
  4. 自己搭建:  
  5.     - gitlab   

Git命

接下来我用`git`命令,来一步步实现GitHub发布项目,版本控制的功能

1、首先在电脑上创建一个空文件夹,我为这个空文件夹起名叫demo,然后进入该文件夹首先在GIT终端执行,`git init` 指令,会在demo文件夹生成`.git`文件夹

2、在demo文件夹内创建一个a.txt文件,然后通过`git status` 查看,该指令作用是 列出修改过的(绿色标识)、新创建的(红色标识)、已经暂存但未提交的文件(白色标识)

3、然后通过`git add 某文件(git add . 添加全部)`添加刚才我们新建的a.txt文件

4、然后通过`git commit -m "备注信息"`,提交本次内容

以上4步的操作效果截图如下:

技术分享图片

技术分享图片

 

5、我们利用上述指令,在往demo文件夹中添加一个b.txt文件,然后通过`git log`查看我们的操作记录,然后可以查询到我们添加a.txt和b.txt的log日志,然后通过`git reset --hard b96f962d0f835e3114b6f51bf7c9bfe6125626e3`,去回退到我们的操作节点,此时我回退到第一次添加文件节点,也就是demo文件夹只有一个a.txt文件,以下是git端的效果截图

技术分享图片

 

6、此时查看`git log` 结果发现只有一条操作记录,也就是我们添加的a.txt的记录,我们之前进行的第二步操作呢?也就是添加的b.txt文件节点时,我们如何回退到最后这个节点呢?我们可以利用`git reflog`

技术分享图片

7、此刻demo文件夹中的2个文件内容,a.txt文本如下:

[html] view plain copy
 
  1. 初始化内容  

b.txt文本内容如下:

[html] view plain copy
 
  1. 这是b文本内容  

我们继续为b.txt添加如下记录信息

[html] view plain copy
 
  1. 我们临时为b添加记录  

此刻b.txt文件内容如下:

[html] view plain copy
 
  1. 这是b文本内容  
  2. 我们临时为b添加记录  

上述意思就是在更新`b.txt`文件内容,添加操作记录如果用到开发场景,我们在**需求1**,然而由于工作需要,**需求1**需要暂且搁置,我们需要做**需求2**,**需求1**代码需要砍掉,等我们做完**需求2**,我们继续需要获取我们之前**需求1**的代码,我们可以利用`git stash`命令,以下是该命令的含义

[html] view plain copy
 
  1. git stash             将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态  
  2.                 git stash list        查看“某个地方”存储的所有记录  
  3.                 git stash clear     清空“某个地方”  
  4.                 git stash pop       将第一个记录从“某个地方”重新拿到工作区(可能有冲突)  
  5.                 git stash apply     编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)   
  6.                 git stash drop      编号,删除指定编号的记录  

 

技术分享图片

这次会有冲突,我们需要解决冲突,即可

 

8、我们可以通过`git branch` 查看我们的项目所有分支,默认只有一个`master`主分支,我们可以通过`git branch dev`(dev是我们起的分支名)新建一个分支,名字是dev开发分支,然后通过`git checkout dev`切换到我们新建的dev分支,我们也可以通过`git checkout -b 分支名`一并实现创建、切换分支的功能

技术分享图片

9、我们切换到`dev`分支,通过`touch 文件名`创建一个文件,然后add、commit ,意思就是在dev分支上做一些修改,并保存在dev分支上,然后在切回master分支,我们要做的就是将dev上更新的内容,也在master上做同样的修改,我们可以用`git merge` 分支名,将dev上的更新内容,合并到master上另外删除分支使用`git branch -d 分支名`

技术分享图片

10、利用`github`创建项目,会出现如下指令,需要在git终端输入创建生成项目,要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]:

通过`git remote add origin 和https://github.com/iyongfei/test.git`

技术分享图片

技术分享图片

 

11、接下来我们通过`git clone https://github.com/iyongfei/test.git`来`clone`下载我们的`github`项目,我们默认拉取的是`master`分支(默认分支可以在**github**设置其他分支)

然后根据以前的git指令,进行`git add .` 和 `git commit -m "备注信息"`,

注意注意,由于项目开发都是协同开发,我们在接下来在提交代码之前,需要`git pull origin 分支`,拉取对应分支代码,然后如果有冲突解决冲突,然后在`git push origin 分支名`

ps:我如下的截图在提交代码时,为了简化操作,没有`git pull

技术分享图片

 

12、我们还可以往`github`项目上添加新分支,我们通过`git branch 分支`创建分支,通过`git checkout 分支`切换分支,(或者通过`git checkout -b 分支`,创建并切换分支),然后在添加、提交(我这里没有添加任何信息),最后`git push origin dev` 往github项目上添加新分支

技术分享图片

 

13、我们还可以拉取其他分支的内容到本分支,比如我在`master`上添加内容,然后我在`dev`分支上去拉取`master`上的代码,然后在提交到对应的github分支`dev`上(我本地依然没有添加额外的内容)

技术分享图片

 

14、冲突如何产生?我们如何解决冲突?当自己拉取了`dev`的代码,同事也拉取了`dev`的代码,同事先于我提交代码,然后自己也在本地修改了代码,如果修改了同一个文件,会出现冲突情况,再次拉取`dev`代码会失败,而且提交失败

技术分享图片

 

解决方式一:先在自己本地`dev`,通过`git stash`暂存修改,然后`git pull 分支`代码,再然后`git stash pop` 合并代,解决冲突(删掉我们不需要的代码),然后在提交代码

[html] view plain copy
 
  1. <<<<<<Updated upstream  
  2. aa为各个  
  3. bb额外分  
  4. =======  
  5. aac  
  6. bbd  
  7. >>>>>>> Stashed changes  

技术分享图片

解决方式二:不利用`git stash`,利用`compare`对比软件,将有冲突的文件,剪切出来,然后拉取`dev`分支代码,就把github的`dev`分支最新代码,同步下来,然后在跟自己的剪切出来的代码段,进行对比,将自己的代码更新到同步下来的代码,然后在提交到github对应的分枝上

技术分享图片

 

 

########################以下是项目中的截图########################

1、首先进入项目的主分支

技术分享图片

2、Fork一份工程,当做自己的项目管理分支

技术分享图片

技术分享图片

3、在电脑上创建一个文件夹,先Clone一份自己工程的项目分支(xxx屏蔽公司信息)

git clone [email protected]:xxxxxx/SELand_Vertu

4、进入项目的二级目录进入git客户端,确认要pull分支

      git branch看看当前的分支

      git checkout -b develop  切换到develop分支,因为我要pull拉去develop分支上的项目

5、然后在将自己的项目分支同步项目主分支(我们项目分支为develop分支)

git pull [email protected]:xxx/SELand_Vertu develop

6、每次提交代码时候,需要先同步项目主分支代码

git status是哪些文件有所修改

git diff 可以查询所修改的代码

git add -A 增加自己所做的修改

git commit -a 提交所有修改的代码

git push origin develop 提交代码

技术分享图片

 

7、最后在new merge request,提交给相应的负责人,进行merge代码

技术分享图片

 

错误解决::::

如果某个同事提交代码,老大没有及时merge代码,自己也提交该文件的代码,那么老大merge代码会有冲突

会差生如下的错误提示:

Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use ‘git add/rm <file>‘
as appropriate to mark resolution, or use ‘git commit -a‘.

可以这样修改

1、git pull [email protected]:xxx/SELand_Vertu develop先同步一下会出现以上的错误

2、pull会使用git merge导致冲突,需要将冲突的文件resolve掉 git add -u,

3、在项目中看看哪些代码是对方改的,哪些代码是自己修改的,在合并成一份最新的代码

4、git commit之后才能成功























以上是关于Git命令提交项目代码的主要内容,如果未能解决你的问题,请参考以下文章

Git命令cherry-pick,选择把一部分代码提交到另一个分支

Git利用命令行提交代码步骤

Git不同项目代码分支合并,且仅合并特定提交

Git很麻烦?只要掌握这几个命令,轻松将代码提交远程仓库

git项目提交及分支操作命令

git命令行将本地项目上传到仓库