标签:地方 UI ges term inf 目录 clone object new
今天就结合`GitHub`,通过`Git`命令,来了解如何实现开源代码库以及版本控制
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管所以我们需要下载一个Git客户端软件,用来执行各种指令
Git下载地址https://git-scm.com/
下载完毕后,配置`path`环境变量,`E:\develop\git\Git\bin`(我本机的在E盘下)
在`doc`命令行窗口输入`git`命令,如果出现如下的信息,说明安装成功,
点击鼠标右键,菜单栏会出现 `Git GUI` 和 `Git Bash`GUI: Graphical User Interface(用户图形界面)Bash:是Windows下的命令行工具
版本存储仓库:
接下来我用`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文本如下:
b.txt文本内容如下:
我们继续为b.txt添加如下记录信息
此刻b.txt文件内容如下:
上述意思就是在更新`b.txt`文件内容,添加操作记录如果用到开发场景,我们在**需求1**,然而由于工作需要,**需求1**需要暂且搁置,我们需要做**需求2**,**需求1**代码需要砍掉,等我们做完**需求2**,我们继续需要获取我们之前**需求1**的代码,我们可以利用`git stash`命令,以下是该命令的含义
这次会有冲突,我们需要解决冲突,即可
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` 合并代,解决冲突(删掉我们不需要的代码),然后在提交代码
解决方式二:不利用`git stash`,利用`compare`对比软件,将有冲突的文件,剪切出来,然后拉取`dev`分支代码,就把github的`dev`分支最新代码,同步下来,然后在跟自己的剪切出来的代码段,进行对比,将自己的代码更新到同步下来的代码,然后在提交到github对应的分枝上
########################以下是项目中的截图########################
1、首先进入项目的主分支
2、Fork一份工程,当做自己的项目管理分支
3、在电脑上创建一个文件夹,先Clone一份自己工程的项目分支(xxx屏蔽公司信息)
git clone git@xxxx.gitlab.com:xxxxxx/SELand_Vertu
4、进入项目的二级目录进入git客户端,确认要pull分支
git branch看看当前的分支
git checkout -b develop 切换到develop分支,因为我要pull拉去develop分支上的项目
5、然后在将自己的项目分支同步项目主分支(我们项目分支为develop分支)
git pull git@xxx.gitlab.com: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 git@xxx.gitlab.com:xxx/SELand_Vertu develop先同步一下会出现以上的错误
2、pull会使用git merge导致冲突,需要将冲突的文件resolve掉 git add -u,
3、在项目中看看哪些代码是对方改的,哪些代码是自己修改的,在合并成一份最新的代码
4、git commit之后才能成功
标签:地方 UI ges term inf 目录 clone object new
原文地址:https://www.cnblogs.com/justuntil/p/8966383.html