MENU

Git的使用

获取Git仓库通常有两种方式:

1.在本地初始化一个Git仓库(不常用)
2.从远程仓库克隆(常用)
获取Git仓库-在本地初始化Git仓库
执行步骤如下:
1.在任意目录下创建一个空目录(例如repo1)作为我们的本地Git仓库
2.进入这个目录中,点击右键打开Git bash窗口
3.执行命令git init
l48h8zgq.png
获取Git 仓库-从远程仓库克隆
可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
命令形式:git clone + 【远程Git仓库地址】
l48hnrnt.png

工作区、暂存区、版本库概念

版本库: 前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区: 包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区: .git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
l48htezp.png

Git工作区中的文件存在两种状态:

untracked未跟踪 (未被纳入版本控制)
tracked已跟踪 (被纳入版本控制)

  1. Unmodified未修改状态
  2. Modified已修改状态
  3. Staged已暂存状态

    注意:这些文件的状态会随着我们执行Git的命令发生变化

    文件在没有执行命令git add 时候,文件处于未跟踪状态

    Git常用命令

    本地仓库常用命令如下:
    git status   查看文件状态
    l48in20b.png

git add    将文件的修改加入暂存区
l48imhns.png

git reset     将暂存区的文件取消暂存或者是切换到指定版本
l48ip3bf.png

l493vay5.png

git commit    将暂存区的文件修改提交到版本库
l48itpo8.png
git log      查看日志
l493rsh1.png

远程仓库操作

git remote    查看远程仓库
l4941wq9.png

git remote add  添加远程仓库
添加远程仓库,运行 git remote add <shortname><url>添加一个新的远程Git仓库,同时指定一个可以引用的简写。
l4945myz.png

git clone     从远程仓库克隆
如果你想获得一份已经存在了的Git 远程仓库的拷贝,这时就要用到git clone命令。Git克隆的是该Git仓库服务器上的几乎所有数据(包括日志信息、历史记录等),而不仅仅是复制工作所需要的文件。
克隆仓库的命令格式是: git clone [url]

git pull     从远程仓库拉取
将本地仓库内容推送到远程仓库,可以使用命令: git push [remote-name] [branch-name]
先加载到缓存区
l494b6rm.png
这个只是把文件提交到了本地仓库,还没有到远程仓库
l494dhk9.png

注意:先提交到本地仓库,在提交到远程仓库,顺序不能搞错。

git push     推送到远程仓库
l4952o31.png
l49540di.png

远程仓库操作-从远程仓库拉取

git pull命令的作用是从远程仓库获取最新版本并合并到本地仓库,命令格式: git pull [short-name] [branch-name]

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,
此时再从远程仓库拉取文
件的时候会报错( fatal: refusing to merge unrelated histories )
解决此问题可以在git pull命令后加入参数--allow-unrelated-histories

分支操作

分支是git使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。同一个仓库可以有多个分支,各个分支相互独立,互不干扰。
git branch查看分支
分支操作-查看分支

  1. git branch列出所有本地分支
  2. git branch -r列出所有远程分支
  3. git branch -a列出所有本地分支和远程分支

l495q6v5.png

git branch [name]创建分支
l495rosr.png
同时会提示我们在那个分支上(加*号绿色的代表我们在那个分支)

git checkout [name]切换分支
l495wzj7.png

git push [shortName] [name]推送至远程仓库分支
l495zlax.png
同送到分支内容
l4967lkv.png
l4967txl.png
git merge [name]合并分支

标签操作

Git 中的标签, 指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 、v1.2等)。

git tag列出已有的标签
l496qn0t.png

git tag [name]创建标签
l496ruyy.png

git push [shortName] [name]将标签推送至远程仓库
l496t39n.png

git checkout -b [branch] [name]检出标签

{mtitle title="更多命令"/}

一、git安装后-指定名称和邮箱

$ git config --global user.name "Your Name"
 
$ git config --global user.email "email@example.com"

二、创建版本库

$ mkdir learngit    //创建
$ cd learngit    //使用
$ pwd    //查看当前目录
$ git init    //初始化,生成.git文件(若该文件隐藏,则使用ls -ah)

三、把文件添加add和提交commit到版本库

$ git add test.txt    //添加
$ git commit -m "wrote a test file"    //提交
$ git commit -m "add 3 files."        //一次性提交多个文件
注意:必须在当前版本库和当前目录下

四、版本控制

$ git log    //查看提交历史记录,从最近到最远,可以看到3次
$ git log --pretty=oneline    //加参,简洁查看
$ git reflog    //查看每一次修改历史
$ cat test.txt    //查看文件内容
$ git status    //查看工作区中文件当前状态
$ git reset --hard HEAD^(HEAD~100)(commit id)    //回退版本
$ git checkout -- test.txt    //丢弃工作区的修改,即撤销修改
$ git reset HEAD test.txt    //丢弃暂存区的修改(若已提交,则回退)
五、删除文件
$ rm test.txt
//直接删除
$ git rm test.txt
$ git commit -m "remove test.txt"
//删错了,恢复
$ git checkout -- test.txt

六、远程仓库

$ ssh-keygen -t rsa -C "youremail@example.com"    //创建SSH Key
$ git remote add origin git@github.com:Daisy/AKgit.git    //关联
$ git push -u origin master    //将本地内容推送到远程仓库(第一次)
$ git push origin master    //将本地内容推送到远程仓库(之后)
$ git remote -v        //查看远程仓库信息
$ git remote rm origin    //删除远程仓库(解绑)
$ git clone git@github.com: Daisy/AKgit.git    //克隆远程仓库
//克隆之后使用和查看
$ cd gitskills
$ ls
$ git remote    //查看远程库的信息
$ git remote -v    //查看远程库的详细信息

七、多人协作

$ git checkout -b dev    //创建并切换到分支dev
//创建并切换到分支dev,同上
$ git branch dev    //创建
$ git checkout dev    //切换
//新版本
$ git switch -c dev    //创建并切换到分支dev
$ git switch master    //直接切换分支
$ git branch        //查看当前分支
$ git merge dev    (--no-ff)(-m)//合并,把dev分支的工作成果合并到master分支上
$ git branch -d dev    //删除dev分支 
$ git stash    //将现场储藏起来
$ git stash list    //查看储存的工作现场
//恢复和删除
$ git stash apply
$ git stash drop
//恢复并删除
$ git stash pop
$ git cherry-pick 4c805e2    //复制修改
$ git push origin master(dev)    //推送分支
$ git checkout -b dev origin/dev    //创建远程origin的dev分支到本地
$ git pull    //抓取分支(解决冲突)
$ git branch --set-upstream-to=origin/dev dev//指定本地与远程dev的链接
$ git rebase    //把本地未push的分叉提交历史整理成直线

八、标签管理

$ git tag v1.0    //打标签
$ git tag -a v0.1 -m "version 0.1 released" 1094adb //指定标签名和说明文字
$ git tag    //查看所有标签
//若是忘记打,则查找历史提交commit id ,再打上
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 f52c633
$ git show v0.9        //查看标签详细信息
$ git tag -d v0.1    //删除标签
$ git push origin v1.0    //推送标签到远程
$ git push origin –tags    //一次性推送全部本地标签
//删除标签,(若已推送到远程,先从本地删除,从远程删除)
$ git tag -d v0.9
$ git push origin :refs/tags/v0.9 

九、自定义git

$ git config --global color.ui true    //让git显示颜色
//忽略特殊文件
//.gitignore文件
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
# My configurations:
db.ini
deploy_key_rsa
//把该文件也提交到git
$ git add -f App.class        //强制添加被忽略的特殊文件
$ git check-ignore -v App.class    //检查哪个规则出错
# 排除所有.开头的隐藏文件:
.*
# 排除所有.class文件:
*.class
# 不排除.gitignore和App.class:
!.gitignore
!App.class
$ git config --global alias.st status    //配置别名
$ git config --global alias.unstage 'reset HEAD'  //配置操作别名
$ git config --global alias.last 'log -1'    //显示最后一次提交信息
$ git last    //显示最近一次的提交
$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"  //颜色
$ cat .git/config //查看每个仓库的git配置文件
$ cat .gitconfig  //查看当前用户的git配置文件
Last Modified: June 27, 2022