Git一般工作流及常用Git命令
2023-09-27 14:26:28 时间
1. 工作流程
在多人使用Git进行开发,如果没有一个规范的工作流程,那么就很容易导致提交冲突,或者提交被覆盖等:这里假设主分支是work
(一般不建议在master有很多人有提交权限),自己得分支交myBranch
, 常规工作流如下:
- 提交自己或换存(stash)当前所在分支的修改
git commit -a #或 git stash
- 切换到项目主分支
git checkout work
- 拉取远程其他人最新的修改,一般此时不会产生冲突
git pull
- 切换到自己的工作分支
git checkout myBranch
- 执行rebase(git rebase 和 git merge 的区别,但是应该注意的是应该尽量使用rebase)合并主干的修改,如果此时出现冲突在这时候处理冲突;
git rebase master
- 回到主工作分支
git checkout work
- 合并自己所在工作分支的修改到主分支,因为在自己的分支已经处理过冲突此时不会产生冲突。
git rebase myBranch
- 提交到远程主干
git push
经过上述的处理,在远程主干分支上的历史永远是线性的,每个人在自己的本地分支合并代码并解决冲突,就不会在主干上产生冲突。
2. 常用命令
git 修改用户名
- 使用下列命令修改,表示你这台机器上所有的Git仓库都会使用这个配置
git config --global user.name "lym"
git config --global user.email "lym@163.com"
- 只修改某个仓库 对应Git
git config user.name "lym"
git config user.email "lym@163.com"
git 回滚
git reset --hard *
回退git log记录里的某次提交 ,--hard
表示会将工作区、暂存区、本地仓库的所有提交的文件全都撤销(包括工作区文件,会删除);例如下面的命令:
git reset --hard a23c29ba043334552851f8ebe51202c78fd61506//git 回滚
同时还有 --mixed
意思是:不删除工作空间改动代码,撤销commit和git add 操作,这个一般是默认参数,也就是当我们执行git reset --mixed HEAD^
和git reset HEAD^
效果是一样的。
常用git stash命令
stash 暂存命令一般用于要切换到其他分支前暂存储当前分支的修改,回来后再恢复切换前的工作状态;一般的常用命令有:
git stash //暂存修改
git stash apply//恢复暂存
stash 其他命令参数见下表:
命令 | 解释 |
---|---|
git stash save “save message” | 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别 |
git stash list | 查看stash了哪些存储 |
git stash show | 显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1} |
git stash show -p | 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p |
git stash apply | 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} |
git stash pop | 命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1} |
git stash drop stash@{$num} | 丢弃stash@{$num}存储,从列表中删除这个存储 |
git stash clear | 删除所有缓存的stash |
查看某个文件的修改记录git show
在自己工作的分支下的目录下,执行下列命令
git log --pretty=oneline 文件名
使用上述的命令可列出文件的所有改动历史,注意命令后面跟的是要查询的文件名,这里着眼于具体的一个文件,而不是git库,如果是库,对于较大项目来说可能就很庞大了;
通过上面命令就能拿到某次修改的哈希值,接下来使用下列命令:
git show 56Kkd98gdjnnksdjksdu84938
使用git show即可显示具体的某次的改动的修改;
git 其他命令
git merge *** 合并某分支到***分支
git branch -d *** 删除***分支
git checkout -b *** 转换到一个分支***如果没有就创建一个新的
git checkout 命令加上 -b 参数表示创建并切换,相当于以下两条命令:
git branch *** //创建一个 *** 分支
git checkout *** //转换到 *** 分支
相关文章
- 常用Git命令清单(转)
- git亲测命令
- git分布式版本控制(四)
- 解决git pull/push每次都需要输入密码问题 和 HttpRequestException encountered
- 常用的 Git 命令,给你准备好了!
- git 报错解决Validate branches Cannot Create: This merge request already exists
- 常用的 git 命令
- git命令——git commit
- crontab 不能执行git命令问题备忘
- git 可以指定文件 只 pull 不提交本地更新么
- 使用git命令提交远程github仓库的时候提示"rejected"(拒绝)解决办法
- git命令
- git add -A 和 git add . 的区别
- git pull命令的用法
- git项目实战常用workflow和命令
- jenkins pipeline之流水线脚本版本化学习二(实践之下git下载)
- git branch---删除命令
- Git 常用的命令总结(欢迎收藏备用)
- git的fast forward & git命令学习 & no-ff
- git介绍,安装(手把手),命令与使用(包含IDEA操作,github,gitee的万字图文详述)
- git cannot lock ref
- 修改GIT密码
- git学习------>git commit命令的默认编辑器的修改