Git常见操作指令
Posted 前端加油
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git常见操作指令相关的知识,希望对你有一定的参考价值。
文章目录
Git学习
1. 配置git
配置提交人姓名
:git config --global user.name 提交人姓名
配置提交人姓名
:git config --global user.email 提交人邮箱
查看git配置信息
:git config --list
2.创建版本库
创建新的文件夹
:mkdir xxx
创建新的文件
:touch xxx
初始化git仓库
:git init
把文件添加到暂存区
:git add 文件(需要提交的修改过的文件通通放到暂存区)
把工作时的所有变化提交到暂存区
:git add .
把文件提交到仓库
:git commit -m “提交信息”(表明本次提交的含义)(每当你觉得文件修改到一定程度的时候,就可以用commit保存。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作。)
Git的版本库里存了很多东西,其中最重要的就是称为stage的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
把文件往Git版本库里添加的时候,是分两步执行的
:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。每次修改,如果不用git add到暂存区,那就不会加入到commit中
3.版本回退
查看仓库状态
:git status
当对文件修改后,查看具体修改的内容
:git diff
显示提交记录,显示版本号和提交人信息
:git log (输入q结束)
版本回退
:git reset --hard commit_id(commit_id为回退版本的版本号,只需输入版本号的前几位,如33bf43)
显示自己提交命令历史
:git reflog
当你改乱了或删除工作区某个文件的内容,想直接撤销工作区的修改时
:git checkout – xxx
当你不但改乱或删除工作区某个文件的内容,还添加到了暂存区时,想撤销修改,分两步
:先git reset HEAD xxx可以把暂存区的修改撤销掉重新放回工作区 后git checkout – xxx 撤销工作区的修改
在工作区删除文件
:rm xxx
在暂存区中删除文件
:git rm xxx
4.远程仓库
在github创建一个新仓库learngit
在本地仓库关联到远程仓库
:git remote add
比如:git remote add origin git@github.com:Better-XKF/learngit.git]
origin是在本地仓库中对远程仓库起的别名,也可以为别的,连接github可以写github,连接gitee可以写gitee,这样一来,我们的本地库就可以同时与多个远程库互相同步,如果要推送到GitHub,使用命令git push github master,如果要推送到Gitee,使用命令:git push gitee master
git@github.com:Better-XKF/learngit.git为我github远程仓库learngit的URL地址
第一次把本地库的内容推送到远程库上
:git push -u origin master(以后不用加u)
由于远程库是空的,我们第一次推送master分支时,加上了-u参数(以后修改不加),Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
查看远程库信息
:git remote -v
删除远程库
:git remote rm xxx
此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。
克隆仓库
:git clone
5.分支管理
为了便于理解,可以认为分支就是当前工作目录中代码的一份副本。使用分支,可以让我们从开发主线上分离出来,以免影响开发主线。多件事情同时进行,互不影响。
创建分支
:git branch xxx
切换分支
:git switch/checkout xxx (使用switch比checkout更容易理解)
创建并切换分支
:git switch -c xxx/ git checkout -c xxx
查看当前所在的分支
:git branch(列出所有分支,当前分支前面会标一个*号。)
在分支xxx开发完,将代码改动的地方提交到仓库 ,xxx分支工作完成后切换到master分支
:git switch master
在master分支上发现在xxx分支改动的地方在master分支上没有,这是因为那个提交是在xxx分支上,而master分支此刻的提交点并没有变。
合并分支
:git merge xxx (合并xxx分支到当前的分支)
删除分支
:git branch -d xxx
解决合并分支冲突问题
:当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用git log --graph命令可以看到分支合并图。
修复bug
:当你接到一个修复一个代号2的bug的任务时,很自然地,你想创建一个分支bug-2来修复它,但是,当前正在dev上进行的工作还没有提交
将工作现场进行保存
:git stash
切换到master分支创建bug-02分支修复bug,修复完成后,切换到master分支,并完成合并。接着回到dev分支干活了。
在dev分支中先修复刚才的bug-02
:git cherry-pick commit_id(下面是e763105)
查看工作现场保存列表
:git stash list
恢复工作现场,接着进行dev分支开发
:git stash pop
强制删除一个没有被合并过的分支
:git branch -D xxx
6.多人协作消除冲突
代码提交的时候常常会发生冲突的情况,尤其是协同开发的情况下。在合并分支的时候, dev分支恰好有人都修改了同一个文件,git不知道应该以哪一个人的文件为准,也就是说dev分支相同文件相同位置的的不同操作!所以就产生了冲突了。
git push产生冲突,说明有人先你一步同步了他的本地代码到远程。这时候,你需要先拉取代码,可以使用命令git pull , 该命令会将远程的提交和你本地的提交merge,如果有冲突需要手动解决并提交,会产生merge的记录
git pull – rebase 该命令会把你的提交“放置”在远程拉取的提交之后,即改变基础(变基),如果有冲突解决所有冲突的文件,git add <冲突文件> git rebase --continue完美解决问题。
从本地推送分支
:git push origin branch-name
拉取远程仓库代码
:git pull
可能会抓取失败,需要指定本地dev分支与远程origin/dev分支的链接
: git branch --set-upstream-to=origin/dev dev
抓取成功后,代码本地合并,我们需要手动解决冲突,再推送
:git push origin dev
在GitHub上,可以任意Fork开源仓库,自己拥有Fork后的仓库的读写权限,可以克隆到本地进行修改,也可以推送pull request给官方仓库来贡献代码。
7.标签管理
新建标签
:git tag (默认为HEAD,是打在最新提交的commit上,先提交commit再打tag,也可以指定一个commit id:git tag v0.9 f52c633)
指定标签信息
:git tag -a -m “blablabla…”
查看所有标签
:git tag
推送本地标签
:git push origin
推送全部未推送过的本地标签
:git push origin --tags
删除一个本地标签
:git tag -d
删除远程标签
:git push origin :refs/tags/
配置别名
:git config --global alias.st status (st表示status)
很多人都用co表示checkout,ci表示commit,br表示branch sw表示switch
以上是关于Git常见操作指令的主要内容,如果未能解决你的问题,请参考以下文章