Git 基础语法

官方文档
GUI客户端
GitHub Desktop

安装Git

Git-2.25.1-64-bit
TortoiseGit-2.11.0.0-64bit
TortoiseGit-LanguagePack-2.11.0.0-64bit-zh_CN

本地仓库

设置
git config user.name查看用户名
git config user.email查看邮箱地址
git config --global user.name “username”修改用户名
git config --global user.email “email”修改邮箱地址
git config -l查看Git全局设置信息
创建版本库
git init把当前目录变成Git可以管理的仓库,会在当前目录下生成.git目录如果.git目录是藏隐的,可用 ls -ah 命令显示
查看仓库的状态
git status查看当前仓库的状态
git diff工作区(workdict)和暂存区(stage)的比较
git diff commit_id工作区(workdict)和指定版本的比较
git diff commit_id – file工作区(workdict)和指定版本中的指定文件的比较
git diff --cached暂存区(stage)和分支(master)的比较
添加文件
git add file把文件添加到仓库(暂存区)
git commit -m “comments”把文件提交到仓库(分支),-m后面是备注注释
git add .添加目录下的所有文件
git add folder/添加目录下的指定文件夹
查看日志
git log查看提交历史
git log -pretty=oneline查看提交历史,并使内容单行显示
git reflog查看命令历史
删除文件
rm file删除工作区文件,不提交到暂存区
git rm file删除工作区文件,自动提交到暂存区
版本回退
git reset --hard commit_id回退到指定版本,版本号没必要写全,前几位就可以了
git reset commit_id file指定文件回退到指定版本
git reset用来撤销所有暂存区域文件
git reset – file用来撤销最后一次git add file
git reset HEAD file把暂存区的修改撤销掉(unstage),不还原工作区
git checkout – file把file文件在工作区的修改全部撤销,工作区被还原成和暂存区一致可以用 * 指定这次修改的所有文件名称

在Git中,commit_id(版本号),和SVN不一样,Git的commit_id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示
在Git中,也用HEAD表示当前版本号,上一个版本就是HEAD^ ,上上一个版本就是HEAD^^,依次类推,上100个版本也可以写成HEAD~100

远程仓库

SSH Key
ssh-keygen -t rsa -C “email”创建SSH Key
cd ~/.sshpwd查询SSH Key目录~ 代表 C:/user/xxx/
ssh -T git@gitee.comssh -T -v git@gitee.com检查SSH连接状态
代理
git config --global http.proxy http://127.0.0.1:1080git config --global https.proxy ‘socks5://127.0.0.1:1080’设置代理
git config --global --unset http.proxygit config --global --unset https.proxy取消代理
git config --global --get http.proxygit config --global --get https.proxy查看当前已设置的代理查询的时候没有打印任何东西证明没有设置代理
关联远程库
git remote add origin xxx关联远程库,远程库的名字就是origin这是Git默认的叫法,也可以改成别的
从远程仓库克隆
git clone xxxGit支持多种协议默认的git://使用ssh,也可以使用https等其他协议
推送
git push origin master将本地库推送至远程库
git push -u origin master加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支还会把本地的master分支和远程的master分支关联起来
抓取
git pull抓取
git pull --rebase origin master如果远程库不为空必须做这一步,否则后面的提交会失败

分支

git branch dev创建分支dev
git branch -d dev删除分支dev
git checkout dev切换到分支dev
git checkout -b dev加上-b参数表示创建并切换dev分支
git branch查看当前分支,会列出所有分支,当前分支前面会标示*号
git merge dev合并指定分支到当前分支
git merge --no-ff -m “merge with no-ff” dev–no-ff参数,表示禁用Fast forward
git log --graphgit log --graph --pretty=oneline --abbrev-commit查看分支合并图

合并分支时,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理

  1. master分支应该是非常稳定的,仅用来发布新版本,平时不能在上面干活
  2. 干活都在dev分支上,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本
  3. 每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并
    git-br-policy

Bug分支

git stash把当前工作现场"储藏"起来,等以后恢复现场后继续工作
git stash list查看"储藏"的工作现场
git stash apply stash@{0}恢复但stash内容并不删除,要用git stash drop来删除
git stash pop stash@{0}恢复的同时把stash内容也删了
git stash drop stash@{0}删除stash内容
git cherry-pick 4c805e2查看"储藏"的工作现场

Feature分支

git branch -D feature-vulcan强行删除没有合并的分支

开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

标签管理

git tag v1.0创建标签,默认标签是打在最新提交的commit上的即HEAD
git tag v1.0 commit_id给指定的commit_id创建标签
git tag -a v1.0 -m “Comments” commit_id创建带有说明的标签
git tag查询所有标签,按字母排序
git tag show v1.0查看标签信息
git tag -d v1.0删除标签
git push origin v1.0推送某个标签到远程
git push origin --tags推送全部尚未推送到远程的本地标签
git tag -d v1.0本地删除
git push origin :refs/tags/v1.0本地删除

如果标签已经推送到远程,需要先从本地删除,再从远程删除

多人协作

git remote查看远程库的信息
git remote -v显示远程库更详细的信息
git remote rm origin删除关联的origin远程库
git fetch origin查看远程库的信息
git diff branch origin/branch查看远程库分支与本地分支的对比
git diff branchA branchB查看本地分支的对比

推送分支

git push origin master把本地分支上的所有本地提交推送到远程库对应的远程分支上
git push origin master -f表示舍弃线上的文件,强制推送
  • master分支是主分支,因此要时刻与远程同步
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步
  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug
  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发

抓取分支

git pull抓取分支
git branch --set-upstream dev origin/dev抓取必须指定本地分支与远程分支的链接
git checkout -b dev origin/dev创建远程origin的dev分支到本地

多人协作的工作模式通常是这样

  1. 首先,可以试图用git push origin branch-name推送自己的修改
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并
  3. 如果合并有冲突,则解决冲突,并在本地提交
  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

自定义Git

git config --global color.ui true让Git显示颜色,会让命令输出看起来更醒目

忽略特殊文件

touch .gitignore创建.gitignore文件
git add -f file用-f可以强制添加
git check-ignore -v file显示忽略规则的位置

忽略文件的原则是:

  1. 忽略操作系统自动生成的文件,比如缩略图等
  2. 忽略编译生成的中间文件、可执行文件等,比如Java编译产生的.class文件
  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件

配置别名

git config --global alias.st status用st代替status–global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用
git config --global alias.unstage ‘reset HEAD’
git config --global alias.last ‘log -1’
git config --global alias.lg “log --color --graph --pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ --abbrev-commit”

配置文件

每个仓库的Git配置文件都放在.git/config文件中
别名就在[alias]后面,要删除别名,直接把对应的行删掉即可
而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置

config定义项目特有的配置选项
description仅供git web程序使用
info/包含一个全局排除文件(exclude文件),用于配置不在.gitignore中的忽略模式
hooks/包含git钩子文件
HEAD指示当前被检出的分支
objects/存放所有数据内容,有info和pack两个子文件夹
refs/存放指向数据(分支)的提交对象的指针
index文件保存暂存区信息,在执行git init的时候,这个文件还没有
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值