App 2.0开发模式的行业看法
890
2022-10-13
git基本使用
git工作区域
暂存区 暂存已经修改的文件到最后统一提交到git仓库中 工作区 — working directory 最终确定的文件保存到仓库,成为一个新的版本,并且对他人可见 git仓库 — git repository —添加编辑修改文件等动作
向仓库中添加文件流程
git status git add 文件名 //将指定文件提交到暂存区git status git commit -m“”提交信息“” git
git安装完成之后,需要进行一些基本的信息设置
1.设置用户名,邮箱
git config --global user.name "用户名"git config --global user.email"邮箱"
2.查看设置
git
初始化git仓库
1.新建文件夹
mkdir
2.在文件内初始化git仓库
git
完成后,会在新建文件夹内生成一个.git文件,刚问价是一个隐藏文件,如果看不见,则设置电脑显示隐藏文件,该文件是用来存储本地仓库信息的
向仓库中添加文件 1.先创建一个要添加的文件
touch
2.创建完成后查看状态
git
结果显示:
$ git statusOn branch masterNo commits yetUntracked files: (use "git add
3.将该文件添加到暂存区
git
4.再一次查看状态
git
结果
$ git statusOn branch masterNo commits yetChanges to be committed: (use "git rm --cached
5.将暂存区的文件添加到仓库
git commit -m "first commit"
结果
[master (root-commit) 12cfdd0] first commit 1 file changed, 0 insertions(+), 0 deletions(-)
这样则为提交成功
修改仓库文件
vi
进入vim编辑器模式编辑完成后wq退出,查看文件内容
cat
结果
$ cat
提交修改文件到暂存区
git
查看状态后继续提交到仓库
git commit -m"second commit"
查看提交日志
git
结果
$ git logcommit 1a966c9a2f465e7e96d4a08caf079e20a96d5bcb (HEAD -> master)Author: kevin <1264222041@qq.com>Date: Sat Mar 16 15:46:27 2019 +0800 third commitcommit 47f293513a5abef373101efe2f1a9d3c80484958Author: kevin <1264222041@qq.com>Date: Sat Mar 16 15:40:15 2019 +0800 second commitcommit 12cfdd0e66f69f556a76639fa276294e66afd982Author: kevin <1264222041@qq.com>
可以看到,现在头指针是指向我第三次提交,也就是最新一次提交的文件, 如果觉得 这个格式很难看,也可以使日志一次提交打印一行的方式显示出来
git
结果
$ git log --oneline1a966c9 (HEAD -> master)
也可以这样
git
结果
1a966c9 (HEAD -> master) HEAD@{0}: commit: third commit47f2935 HEAD@{1}: commit: second commit12cfdd0 HEAD@{2}: commit (initial): first commit
版本回退
版本回退的实质就是 头指针(HEAD)的移动 1.基于索引值
git
我们先查看下当前第三次提交的文件内容
$ cat
回退版本到第二次提交
$ git
结果:查看下当前文件内容
$ cat
查看下提交日志
$ git log --oneline47f2935 (HEAD -> master)
现在的头指针指向了第二次提交的版本
现在我们又想回到第三次提交的版本 同样道理,只需要改变索引值
$ git
现在头指针又重新指向第三次也就是我们最新提交的版本 查看当前文件内容
$ cat
这两个版本前进和回退过程的日志信息也被记录下来了
$ git reflog1a966c9 (HEAD -> master) HEAD@{0}: reset: moving to 1a966c947f2935 HEAD@{1}: reset: moving to 47f29351a966c9 (HEAD -> master) HEAD@{2}: commit: third commit47f2935 HEAD@{3}: commit: second commit12cfdd0 HEAD@{4}: commit (initial): first commit
2.基于^符号 — 只可以回退
git reset --hard head^ //一个^表示回退一个版本,两个则表示回退2个,以此类推
我回退两个版本到第一次提交,退出完成后并且查看一下日志
$ git reset --hard head^^HEAD is now at 12cfdd0 first commit12642@LAPTOP-DPV17Q35 MINGW64 ~/Desktop/test (master)$ cat gittest.txt12642@LAPTOP-DPV17Q35 MINGW64 ~/Desktop/test (master)$ git log --oneline12cfdd0 (HEAD -> master)
3.基于~符号
git
~符号后边的数字表示回退的次数, 上边语句的意思是,回退两个版本,相当于
git
现在我回退两个版本回到第一次提交的时候
12642@LAPTOP-DPV17Q35 MINGW64 ~/Desktop/test (master)$ git reset --hard head~2HEAD is now at 12cfdd0 first commit12642@LAPTOP-DPV17Q35 MINGW64 ~/Desktop/test (master)$ git log --oneline12cfdd0 (HEAD -> master)
补充:
–sort参数 仅仅在本地移动头指针–mixed参数 在本地移动头指针,并且重置暂存区–hard参数 在本地移动头指针,并且重置暂存区和工作区
文件比较
比较两个文件内容的差异可以使用命令 我先进入第三次提交的文件的中增加一行“”difference“”
$ vi
随后保存退出,比较差异
$ git diff gittest.txtdiff --git a/gittest.txt b/gittest.txtindex e9d73f6..262cdfc 100644--- a/gittest.txt+++ b/gittest.txt@@ -2,3 +2,5 @@ hello world im kevin im so handsome im so smart`+difference
也可以和第二次提交的版本进行比较
$ git diff head^ gittest.txtdiff --git a/gittest.txt b/gittest.txtindex 4db463f..262cdfc 100644--- a/gittest.txt+++ b/gittest.txt@@ -1,3 +1,6 @@ hello world im kevin+im so handsome+im so smart`+difference
分支
创建分支
git
查看分支
git
结果显示
$ git
但是现在是在master主分支上,我想切换到dev分支上进行开发 切换到dev分支上进行开发
git
再次查看分支
$ git checkout devSwitched to branch 'dev'M gittest.txt12642@LAPTOP-DPV17Q35 MINGW64 ~/Desktop/test (dev)$ git
现在已经切换到dev分支上
现在dev分支上文件和主分支上是一样,我们现在需要在dev分支修改文件然后在合并会主分支 现在在dev分支上修改文件内容,保存退出后提交到暂存区后在提交到本地库
现在dev分支上的功能开发完了,但是master分支上文件还是原来没有修改的, 我们需要将dev分支上的内容合并到master分支上
合并分支
1.切换到接受修改的分支上
$ git checkout masterSwitched to branch 'master'
12642@LAPTOP-DPV17Q35 MINGW64 ~/Desktop/test (master)$ git
结果正在合并
Updating 1a966c9..aeb5ba7Fast-forward gittest.txt | 3 +++ 1 file changed, 3 insertions(+)
现在看看文件内容
12642@LAPTOP-DPV17Q35 MINGW64 ~/Desktop/test (master)$ cat
操作远程仓库
以上我们的操作操作的只是本地仓库,类型gitlab或者github这样的远程仓库上并没有发生改变
1.查看有无地址别名
git
2.起别名
git
别名就是origin
$ git remote -vorigin (fetch) //拉取origin (push)
之后我们便可以通过push将本地修改推送到远程库
git
也可以从远程库拉取
git
git pull
拉取成功后便可以开始一天的工作 我们又修改了一些内容
配置ssh连接远程库
生成key
ssh-keygen -t rsa -C "1264222041@qq.com"
完成以下步骤后:
Generating public/private rsa key pair.Enter file in which to save the key (/c/Users/12642/.ssh/id_rsa): testEnter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in test.Your public key has been saved in
把公钥复制下来,粘贴到gitlab或者github指定地方
1.配置github
ssh
结果显示:
Hi Kevin091827!
2.配置gitlab
查看是否连接成功
ssh
结果:
Welcome to GitLab, @kevin!
现在配置完了,我们就可以参与协作并且将代码提交到远程库了
1.如果本地没有版本库,也没有项目文件
git clone git@gitlab.com:dolphin/testproject.gitcd testprojecttouch README.mdgit add README.mdgit commit -m "add README"git
2.如果本地没有版本库,但有项目文件
cd <你的项目文件夹>git initgit remote add origin git@gitlab.com:dolphin/testproject.gitgit add .git commit -m "Initial commit"git
3.如果本地有版本库,有项目文件
cd <你的项目文件夹>git remote rename origin old-origingit remote add origin git@gitlab.com:dolphin/testproject.gitgit push -u origin --allgit
上面的重点就是每次在开始新工作时先pull远程库的代码下来,然后再工作,工作结束后再add. commit pull, push
原因:
每天早上开始新工作先pull新的下来,是为了确保自己工作在新的代码之下工作结束后add,commit,pull,push的原因是为了确保在自己工作中,别人已经push一个新的上去,工作结束时自己并不知道,所以要先pull下来,看下自己的代码在远程库是否是最新的。在这里先commit,后pull就是为了应对多人开发的情况:
commit 是为了告诉git我这次提交改了什么东西,不然你只是改了,git却不知道,也无从判断**pull是为了将本地commit与远程commit的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull 这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉 **
如果有Bug或者新功能处理…
上面讲解了多人协作流程,下面讲下如果有bug或者新功能开发如何处理
如果有bug或者新功能feature要处理,应该要在本地新建一个分支出来,如bug-01分支,feature-01分支
新建分支有讲究,要么在你当前工作的分支上新建分支,要么在其他干净的分支上新建分
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。