git常用开发操作
环境配置
https://www.jianshu.com/p/ba401eb527a5
单机基本操作
下面介绍常用的git命令
1. 远程克隆
git clone -b XXX
-b 指的是拉取远程仓库的名称,拉下后本地仓库也会有个同名仓库
本地没有文件的话使用git clone,本地已经存在,使用
git pull 拉取当前分支上的最新代码
git diff 查看冲突
ls #克隆的仓库就在该目录下
// 如果有冲突 需要手动解除冲突再提交
2. 查看当期状态
git status
本地修改后
3. 更新代码
git add xxx
git add . #表示添加当前目录的所有文件
add 添加改动纪录后,但是后悔了,想有一些改动不暂存了可以使用
单个文件/文件夹:
git checkout -- filename1
所有文件/文件夹:
git checkout .
4. 提交代码到本地
git commit -m "代码的提交说明" #-m 表示message(消息)
假如在本地commit了之后悔了,我们可以采用两种方案进行进行版本撤退
借助git log
commit 3b0939d505beda0d67551b2b3c809c04d5d50f9b (HEAD -> dev_zz_0708_test)
Author: 周兆(26663875) <zhouzhao008@ke.com>
Date: Thu Jul 9 17:38:52 2020 +0800
加个dev
commit b5f44dc210e481a20cb9612247d6761766002bf6 (origin/dev_zz_0708_test)
Merge: 9fdcfc5d 6de31270
Author: 周兆(26663875) <zhouzhao008@ke.com>
Date: Thu Jul 9 17:23:24 2020 +0800
Merge branch 'master' into dev_zz_0708_test
commit 6de3127068906ce6283cf9364e323e967eeec745 (origin/master, origin/HEAD, master)
Merge: 6a849115 262f7f73
Author: fe-guliming <guliming@ke.com>
Date: Tue Jul 7 11:50:05 2020 +0800
Merge branch 'iteration_7.8.0' into 'master'
你想撤销自己的commit可以取git log后的commit 后的字符
4.1git reset --soft 3b0939d505beda0d67551b2b3c809c04d5d50f9b
4.2git reset --hard 3b0939d505beda0d67551b2b3c809c04d5d50f9b
区别4.1 与4.2 git reset --soft 是回到日志码的版本,但保留此版本后的版本 不改变gitk树的逻辑结构
借助这个git soft我们可以处理本地commit很多次但没提交的问题
git reset --hard 是回到日志码的版本 但会修改本地修改记录,本地文件会回退到commit编码之前的版本。日志码的版本为head版本,修改gitk树结构,所以建议轻易不用!!!!
5. 提交代码到远程
git push #提交到远程
在我们git push 之后 突然又后悔了怎么办呢???
5.1.git reset --hard xxxx(commit后的编码)彻底回退版本,连本地文 件都会被回退到上个版本的内容
5.2.git revert
Revert 撤销一个提交的同时也会重新创建一个提交。这是一个安全的方法,因 为它不会重写提交历史。相比git reset,它不会改变现在的提交历史。
因此,git revert可以用在公共分支上,git reset应该用在私有分支上。
你也可以把git revert当作撤销已经提交的更改,而git reset用来撤销没有提交的更改
扩展:git fetch 与git pull 区别
git fetch
是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分中。
而
git pull
则是将远程主机的最新内容拉下来后直接合并,即:
git pull = git fetch + git merge
,这样可能会产生冲突,需要手动解决。
协同开发时,git的使用
git相比其他的代码管理仓库的区别有,它可以很轻松多分支开发,分支之间的merge等,比如我们现在进入一个新的仓库,第一步要进行在仓库上建立一个自己的分支来进行开发,
- 建立分支
方法
1.直接在网站上进行建立分支
2.第二种方法,我们先git clone主分支的代码,这样我们可以进行切换分支
git checkout -b gl-admin origin/master
// clone 远程master分支上的代码,来新建一个分支
git push --set-upstream origin gl-admin
然后推从到远程,这样本地和远程都能看到这个分支仓库
由于第一种方法简单,我就由第一种方法接着说,我们在第一种方法上新建代码仓库了,接着我们就可以按照单机开发操作进行接着操作了。
但我们代码编写的差不多的时候,以及每日开发之前拉取master最新的代码,在最新的代码基础上进行开发,master的代码是所有人开发的合在一起的最新的没有问题的代码。这个时候 我们需要在本地建立一个master分支,且这个分支是远程的master分支的映射,
git checkout -b 本地分支名 origin/远程分支名
git checkout -b master origin/master
git语句中不带 origin 则属于本地仓库,远程并没有,之间没有映射关系,加了origin/之间有映射关系,有了这个关系,git pull git push 就可以用了
而没有建立这个映射关系的话 每次git pull 和 git push 需要
git pull/push origin 远程分支名
建立分支后在本地我们可以通过以下命令进行查看分支
git branch //当前分支名
git branch -a //所有分支名
git branch -vv //分支之间的映射关系
git branch -d 分支名 //删除不用的分支
git push origin --delete <branchName> //删除远程分支
接下来 我们可以进行如下操作将master最新的代码与现在分支的代码进行合并并提交
git checkout master
git pull
git checkout dev
git merge master
在merge时终端可能提醒输入东西具体操作查看这个链接
https://blog.csdn.net/wq6ylg08/article/details/89047553
git diff
// 如果有冲突 需要手动解除冲突再提交
git status //查看状态,
git add 文件 //添加修改文件
git commit -m ’xxxx‘ //提交到本地
git push
合并任意分支的方法:
当与其他分支的代码进行合并的时候,也是采用类似于合并master分支的代码方式
git checkout -b 本地分支名 origin/远程分支名
git pull
git checkout dev
git merge master
// 如果有冲突 需要手动解除冲突再提交
git status //查看状态,
git add 文件 //添加修改文件
git commit -m ’xxxx‘ //提交到本地
git push
扩展 git rebase
和git merge 类似 但是在git merge后的 git push 后
git log --graph --pretty=oneline --abbrev-commit
查看会发现你的git commit 历史已经被打乱了。
$ git log --graph --pretty=oneline --abbrev-commit
* d1be385 (HEAD -> master, origin/master) init hello
* e5e69f1 Merge branch 'dev'
|\
| * 57c53ab (origin/dev, dev) fix env conflict
| |\
| | * 7a5e5dd add env
| * | 7bd91f1 add new env
| |/
* | 12a631b merged bug fix 101
|\ \
| * | 4c805e2 fix bug 101
|/ /
* | e1e9c68 merge with no-ff
|\ \
| |/
| * f52c633 add merge
|/
* cf810e4 conflict fixed
在合并分支时使用
git rebase 分支名
如果有冲突,rebase会中断,显示如图所示信息。
使用git status查看状态。显示为REBASE的状态。
解决冲突后执行:
git add filename
git rebase continue
如果还有冲突,需要继续解决冲突。
rebase结束后,执行git push。再合并就没有问题了。而且git log显示 commit没有打乱。
git stash的常用命令使用
我们有时会遇到这样的情况,正在dev分支开发新功能,也许做到一半时有人过来反馈一个bug,让马上解决,但是新功能做到了一半你又不想提交,这时就可以使用git stash命令先把当前进度保存起来,然后切换到另一个分支去修改bug,修改完提交后,再切回dev分支,使用git stash pop来恢复之前的进度继续开发新功能。下面来看一下git stash命令的常见用法
git stash
保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行git status命令,就会发现当前是一个干净的工作区,没有任何改动。使用git stash save 'message...'可以添加一些注释
git stash list
显示保存进度的列表。也就意味着,git stash命令可以多次执行。
git stash pop [–index] [stash_id]
git stash pop 恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
git stash pop --index 恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
git stash pop stash@{1}恢复指定的进度到工作区。stash_id是通过git stash list命令得到的
通过git stash pop命令恢复进度后,会删除当前进度。
git stash apply [–index] [stash_id]
除了不删除恢复的进度之外,其余和git stash pop 命令一样。
git stash drop [stash_id]
删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。
git stash clear
删除所有存储的进度。
vscode中使用git常规操作
1.clone
本地分支
更改处只得是本地仓库所改动的一些文件,在这里可以假如本地暂存区,其中消息指的是commit
另外鼠标放在GIT字样旁边会有个下拉菜单,很方便
这是我们采用git diff在控制台看到的diff 也就是 pull 和merge的产生的冲突
接着vscode 我们可以很方便的查看冲突进行修改
修改后 我们就可以 add commit push了
每日一推共同进步
欢迎添加公众号前端从入门到SP
扫一扫添加哦