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 #恢复
posted @ 2020-09-14 09:55  fishers  阅读(341)  评论(1编辑  收藏  举报