Git命令提交项⽬代码
Git客户端安装
今天就结合`GitHub`,通过`Git`命令,来了解如何实现开源代码库以及版本控制
GitHub是⼀个⾯向开源及私有软件项⽬的托管平台,因为只⽀持Git 作为唯⼀的版本库格式进⾏托管所以我们需要下载⼀个Git客户端软件,⽤来执⾏各种指令
下载完毕后,配置`path`环境变量,`E:\develop\git\Git\bin`(我本机的在E盘下)
在`doc`命令⾏窗⼝输⼊`git`命令,如果出现如下的信息,说明安装成功,
[html]
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]
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 b96f962d0f835e3114b6f51bf
7c9bfe6125626e3`,去回退到我们的操作节点,此时我回退到第⼀次添加⽂件节点,也就是demo⽂件夹只有⼀个a.txt⽂件,以下是git端的效果截图
6、此时查看`git log` 结果发现只有⼀条操作记录,也就是我们添加的a.txt的记录,我们之前进⾏的第⼆步操作呢?也就是添加的b.txt⽂件节点时,我们如何回退到最后这个节点呢?我们可以利⽤`git reflog`
7、此刻demo⽂件夹中的2个⽂件内容,a.txt⽂本如下:
[html]
1. 初始化内容
<⽂本内容如下:
[html]
1. 这是b⽂本内容
我们继续为b.txt添加如下记录信息
[html]
1. 我们临时为b添加记录
此刻b.txt⽂件内容如下:
[html]
1. 这是b⽂本内容
2. 我们临时为b添加记录
上述意思就是在更新`b.txt`⽂件内容,添加操作记录如果⽤到开发场景,我们在**需求1**,然⽽由于⼯作需要,**需求1**需要暂且搁置,我们需要做**需求2**,**需求1**代码需要砍掉,等我们做完**需求2**,我们继续需要获取我们之前**需求1**的代码,我们可以利⽤`git stash`命令,以下是该命令的含义
[html]
1. git stash            将当前⼯作区所有修改过的内容存储到“某个地⽅”,将⼯作区还原到当前版本未修改过的状态
2.                git stash list        查看“某个地⽅”存储的所有记录
3.                git stash clear    清空“某个地⽅”
4.                git stash pop      将第⼀个记录从“某个地⽅”重新拿到⼯作区(可能有冲突)
html实现用户注册登录代码
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指令,进⾏`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]
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 git@xxxx.gitlab:xxxxxx/SELand_Vertu
4、进⼊项⽬的⼆级⽬录进⼊git客户端,确认要pull分⽀
git branch看看当前的分⽀
git checkout -b develop  切换到develop分⽀,因为我要pull拉去develop分⽀上的项⽬
5、然后在将⾃⼰的项⽬分⽀同步项⽬主分⽀(我们项⽬分⽀为develop分⽀)
git pull git@xxx.gitlab: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:xxx/SELand_Vertu develop先同步⼀下会出现以上的错误
2、pull会使⽤git merge导致冲突,需要将冲突的⽂件resolve掉 git add -u,
3、在项⽬中看看哪些代码是对⽅改的,哪些代码是⾃⼰修改的,在合并成⼀份最新的代码
4、git commit之后才能成功

发表评论