git常用命令
git常用命令
创建版本库
创建版本库,新建一个文件夹,在这个文件夹中输入git init
mkdir test && cd test
git init
配置账号和邮箱
查看:git config user.name git config user.email
配置:
git config --global user.name "你的昵称"
git config --global user.email "你的邮箱"
修改
1命令修改
git config --global --replace-all user.name "your user name"
git config --global --replace-all user.email"your user email"
2配置文件修改
vim ~/.gitconfig
[user]
name = wangda
email = 1211@qq.com
拉取远端到本地
方法一 https方式
git clone 版本库地址 [本地文件夹名称]
git clone https://gitee.com/songboy/test201907.git httptest
更新:
git pull
密码:
git config --global credential.helper store
.gitconfig文件中新增一项配置
[credential]
helper = store
方法二 ssh拉取
创建ssh key
ssh-keygen
会在当前用户目录下生成公钥和私钥,查看生成的公钥的命令为cat ~/.ssh/id_rsa.pub
添加公钥到服务器
再拉取
git clone git@gitee.com:songboy/test201907.git sshtest
更新 git pull
提交代码
要将代码推送到服务器通常会经历五个步骤:
1更新(git pull 让本地仓库保持最新的版本记录)
2检查(git status 检查一下有哪些文件被改动了)
Untracked: 未跟踪,一般为新增文件,此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作.
deleted: 文件已删除,本地删除,服务器上还没有删除.
renamed:文件名称被改变
如果发现无意中编辑了某一个文件,但实际上并不想改变它,这里可以使用git checkout 文件名
来撤销更改 例如:git checkout README.md
3暂区 缓存
git add index.php(指定文件)
git add app(目录)
git add .
4提交到本地
git commit . -m “这是备注信息”
5正式提交,推送到远端
git push
Git 提交代码可以选择全部提交或者部分提交,全部提交可以用.
替代,部分提交则输入目录名或文件名
提交代码之后还需要使用git push
命令把代码从本地推送到远程服务器
分支管理
1 把远程分支在本地创建,可以通过 git checkout 分支名
命令进行
也可以切换分支(当它发现你本地不存在这个分支,会自动找到远程对应的分支然后在本地进行创建)
git checkout master
2 新建本地分支
加入参数-b
git checkout -b test
如果使用 git push
是不能直接推送的,需要在第一次推送的时候指定远程分支名
git push --set-upstream origin test
3 合并分支
有三个分支,分别是:master
生产环境、develop
开发环境、test
bug 修复分支。现在我在 test
分支中修复了 BUG,需要发布到线上生产服务器上,那么我们就可以在master分支下通过合并分支的方式将test
分支的代码合并到 master
分支中去
git merge test
查看合并记录
git log
4 删除分支 git branch -d 分支名
合并
场景:
develop、test、master三个分支;develop为开发分支,日常在这个分支下开发功能,test分支为功能测试分支,面向测试同事,master分支为生产环境的代码,面向用户;
在 develop 分支下共同开发,觉得没问题之后,会通过git merge
将 develop 代码合并到 test 分支中,然后发布到测试服务器
1 为了让测试人员能够测试到我们开发的功能,我们需要将develop
分支的新版本同步到test
分支中,这个同步的过程有多种方式,但最常见的就是使用git merge
命令,也就是合并代码操作;
在执行代码合并的时候,我们需要将分支切换到test
分支上
git checkout test
再在test下使用git merge命令将develop分支合并到test分支中
保持develop分支与远端同步,在git checkout develop分支下git pull origin develop
git fetch #拉取所有分支
git merge develop #合并develop到test分支
命令执行完毕之后,如果两个分支以往的历史没有差异部分,则会将develop
提交的版本直接复制过来
git push origin test #上传到远端
2 代码冲突
场景:
test分支是给测试人员测试用的,而develop分支是给开发人员使用,因此代码所处的环境略有差异
假如:config/config.php文件的配置在两个分支中不一样,那么合并时就产生冲突
遇到这种代码冲突时候,需要我们人工去解决合并冲突,可以使用 vim 命令删除冲突中的多余代码,
我们需要删除多余代码和冲突发,只保留我们需要在当前分支需要保留的内容即可
vim config/config.php
接着我们需要使用git add
将冲突的文件重新添加到工作区中,并提交一个新的版本
解决冲突后这里提交版本的方式稍微有一些区别,会在git commit
后面增加一个-a
参数,而且不需要-m
参数
git add . && git commit -a
3 事发前,避免代码冲突
这里需要用到一个 Git 仓库当中的特殊文件.gitattributes
和之前的忽略文件类似,它们都是 Git 中的一个特殊文件;我们在里面增加文件并设置参数,当 Git 在触发动作的时候会检查这个规则列表
git checkout develop
echo '/config/config.php merge=ours' > .gitattributes
cat .gitattributes
git add . && git commit . -m '忽略合并测试'
在 test 下 git merge develop 就会忽略冲突了
stash
比如应该在develop分支下完成的代码,错写在master分支下,
那么先在master分支下,git stash 保存已经修改的数据(添加的文件除外)
然后checkout develop,git stash pop 恢复已经修改的数据到develope分支下
常用
git init #init git配置
git pull origin master #同步远端master分支的代码到本地
git add .
git commit
git commit -m "desc"
git commit --amend
git push origin HEAD:refs/for/master
git reset [commit_id]
git status
git log
git show CommitID
git checkout -b develope #创建develop分支
git checkout develope #切换develop分支
git branch #查看有哪些分支
git merge develope #合并develop分支
git stash #暂存
git stash pop #恢复