1. 百科知识问答首页
  2. 问答社区

git bash常用命令全集

0. 配置全局账号
git config –global user.name “xxx”
git config –global user.email “github账号”
1. 生成ssh key,一路enter
ssh-keygen -t rsa -C “github账号” -b 4096

0
2. 粘贴到codeclub上,执行下面的命令,然后去codeclub上粘贴
cat ~/.ssh/id_rsa.pub | clip
3. 拉取代码
git clone https://github.com/jiaidc/miniprogram.git
4. 进入esdk_obs_.net_new工程目录里面
cd obs-sdk/esdk_obs_.net_new
5. 创建分支
git branch sxf_.net
6. 查看本地分支
git branch
7. 切换到自己创建的分支
git checkout sxf_.net
8. 在工程目录里面创建一个新的文件,看能否提交
9. 查看文件状态
git status
10. 将新文件添加到暂存区(每修改一个文件,都需要添加至暂存区,可以使用git add . 实现全部提交,需谨慎操作,别提交日志文件等)
git add fileName
11. 将暂存区的文件提交并添加提交备注
git commit -m “fix uploadFile bug”
12. 查看远程分支(没有push本地分支之前是没有自己创建的分支的,push一次后就有了)
git branch -a
12. 将文件push到远程分支
git push -u origin sxf_.net
13. 重命名分支名称(先删除远程的分支,然后把本地的分支重命名后在提交远程)
git push –delete origin sxf_.net (如果没有推送到远程分支这一步可以省略)
git branch -m sxf_.net new_sxf_.net
git push origin new_sxf_.net
14. 删除本地分支
git branch -d sxf_.net
13、删除本地未合并的分支
git branch -D 分支名
14、删除本地已经合并了的分支
git branch -d 分支名
15、删除服务器远端的分支
git push origin –delete sxf_.net
16、删除已经add的文件(如何撤销已经放入缓存文件的修改)
git rm –cached “文件路径”  不会删除物理文件
git rm –f “文件路径” 不仅删除缓存文件,还会删除物理文件(不会回收到垃圾桶)
15. 更新master或其他分支
git pull origin master
git pull origin sxf_.net
16. 更新远程没有合并master的分支,这样通过git branch -a就可以查看别人没有合并到master的分支
git remote update origin –prune
17. 在分支上面更新master的最新代码
git pull origin master
18. 撤销到某次提交的记录
git log
git revert 7abe6b33cc46045878aea861dde2c5e4f1fa26b3

———————————————————————————————————

#Git是分布式版本控制系统,需要填写用户名和邮箱作为一个标识
git config –global user.name “xxxx”
git config –global user.email “xxxx@xxx.com”

-什么是版本库?
-又名仓库,英文名repository,里面的所有目录,能通过Git管理起来

#创建版本库
//D盘www目录下创建一个testgit版本库(pwd 显示当前目录为/d/www/testgit)
cd d:
cd www
mkdir testgit    //建立目录
git init    //通过这个命令把这个目录变成git可以管理的仓库(testgit目录下会多了一个.git目录,用于跟踪管理版本)

#把文件添加到版本库中
//图片,视频二进制文件,没法跟踪文件的变化,只能把二进制文件每次改动串起来,则1KB->2KB,而不知道改变了什么

#demo
//添加到暂存区(git add)后查看状态信息(git status),在提交到仓库(git commit -m “注释”)
git add readme.txt            //readme.txt添加到暂存区中
git commit -m “readme.txt提交的注释”    //提交文件到仓库
git status                //查看是否还有文件未提交

//查看内容的修改
git diff readme.txt            //查看readme.txt文件内容
cat readme.txt

//日志
git log                    //查看历史记录(git log -pretty=oneline 该命令把历史记录每次的更改显示到一行)

//版本信息
git reset –hard HEAD^            //回退到上一个版本
git reset –hard HEAD^^            //回退上上一个版本
git reset –hard HEAD~100        //回退到前100个版本

//查看历史记录的版本号id
git reflog                //获取版本号
git reset –hard 版本号            //恢复版本号

-工作区与暂存区的区别
-工作区:电脑上看到的目录(.git隐藏目录版本库除外)
版本库:工作区有一个隐藏目录.git,这个不属于工作区,这是版本库,其中最重要的就是stage(暂存区),还有Git自动创建的第一个分支 master,以及指向master的一个指针HEAD

//撤销
git checkout — readme.txt        //把readme.txt文件在工作区做的修改全部撤销(若没有–,git checkout readme.txt则为创建分支)

//删除文件
rm readme.txt                //直接在文件目录把文件删除,或通过rm命令(若彻底删除,则再执行git commit)

-Git是什么?
-Git是目前世界上最先进的分布式版本控制系统

-Git与SVN的最主要的区别?
-SVN是集中式版本控制系统,版本库是集中存放在中央服务器,而Git是分布式版本控制系统,版本库存放于各自电脑,将修改互相推送则可

#远程仓库
-先注册github账号,由于本地Git仓库和github仓库之间的传输是通过SSH加密的,则需要设置:
-第一步:
创建SSH Key,用户主目录->.ssh目录(id_rsa是私钥(不能公开),id_rsa.pub(公钥)两个文件)
ssh-keygen -t rsa -C “xxxx@xxxx.com”
-第二步:
登陆github,打开settings->SSH Keys->Add SSH Key(填上任意title,Key文本框里黏贴id_rsa.pub文件的内容)->Add Key

#分布式版本库:
#添加远程库
-登陆github->create a new repo创建新的仓库(Repository name填入mkdir的目录)->create repository(Git仓库)
-本地仓库下运行命令:
git remote add origin https://github.com/github账号/本地仓库.git
git push -u origin master                        //当前分支master推送到远程,-u参数:第一次推送用,不但会把本地的master分支内容推送到远程新的
//master分支,还会把本地的master分支和远程的master分支关联起来,以后的推送或拉                                            //取可以简化命令
git commit        //本地提交后
git push origin master    //推送到github上

#从远程库克隆
-登陆github->创建新仓库(勾选Initialize this repository with a README,自动生成README.md文件)
git clone https://github.com/github账号/本地库目录(新的)    //这样就可以在本地库里生成一个远程下来的目录

#创建于合并分支
-HEAD指向master,master指向提交(每次提交有一条时间线,则为主分支)

-创建dev分支,后切换到dev
git checkout -b        //表示创建并切换
-相当于
git branch dev        //查看分支(当前分支前会添加一个星号)
git checkout dev
-分支修改与master分支上的数据会不同步,此时可以通过
git merge dev        //在master分支上合并dev分支内容
//会有一个Fast-forward信息:”快进模式”,直接把master指向dev的当前提交,合并速度非常快
-删除分支
git branch -d dev

#解决冲突
-Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<<<<<HEAD指主分支修改的内容,>>>>>>>分支名(git branch dev)
-可以修改为主分支的内容后提交
-查看分支合并的情况
git log

#分支管理策略
-通常合并分支时,git一般使用”Fast-forward”模式,删除分支后,会丢掉分支信息,使用-no-ff来禁用”Fast-forward”模式
git merge -no-ff -m “注释” dev(分支名)
git branch -d dev                    //删除dev分支
git log –graph –pretty=oneline –abbrev-commit    //通过此命令可以看到删除的分支信息还在
-分支策略
-master主分支是稳定的,用来发布新版本,不允许在上面操作,一般在新建的dev分支上操作,操作完,比如要发布,或dev分支代码稳定后可以合并到主分支master上

#bug分支
-每个bug都可以通过一个临时分支来修复,修复完后,合并分支,然后将临时的分支删除
-通过stash功能,把当前工作现场”隐藏起来”,等以后恢复现场后继续工作
git stash
git status    //查看状态,不会有任何错误信息
-隐藏后,可以修复bug了
git checkout -b issue-404    //master分支上创建临时分支issue-404
-修复完成后,切换回主分支master,再删除临时分支
git checkout master
git merge –no-ff -m “merge bug fix 404” issus-404
cat readme.txt
git branch -d issue-404
-查看工作现场
git stash list        //Git把stash内容存放某个地方,但是需要恢复一下
-第一种恢复:
git stash apply        //恢复后,stash内容并不删除,需要使用命令(git stash drop删除)
-第二种恢复:
git stash pop        //恢复的同时把stash内容删除

#多人协作

//协作步骤:
*首先,视图用git push origin branch-name推送自己的修改
*若推送失败,则远程分支比本地更新早,用git pull视图合并
*若合并有冲突,需要解决冲突并在本地提交后用git push origin branch-name推送

//从远程库克隆,Git自动把本地的master分支和远程的master分支对应起来,并且远程库的默认名称是origin
-查看远程库信息
git remote
-查看远程库详细信息
git remote -v
-推送分支
git push origin master

//哪些分支要推送?
-master分支是主分支,因此要时刻与远程同步
-一些修复bug分支不需要推送到远程,可先合并到主分支上,然后把主分支推送

-抓取分支
git push origin dev                    //把dev分支推送到远程
git clone https://github.com/github账号/远程库名称    //进入一个新的本地目录下,进行克隆远程的库到本地

//当要在dev分支上做开发,必须把远程的origin的dev分支到本地来
git checkout -b dev origin/dev            //远程的origin的dev分支到本地来
git commit -m “dev分支上修改完成提交到本地库”
git push origin dev                //再把本地dev分支推送到远程的dev分支上

-不同人推同样的文件,修改同一个文件同一个地方报错,解决办法:
git branch –set-upstream dev origin/dev    //指定本地dev分支与远程origin/dev分支链接
git pull                    //把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突后推送

//若此时再有冲突,则解决冲突后,再提交后再push
cat readme.txt                    //从dev分支上pull下来的文件,使用cat命令,能看到冲突位置

//手动解决后
git add readme.txt
git commit -m “merge&fix readme.txt”
git push origin dev

本作品(图文、音视频)由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系 yu.jianchun@qq.com