原生Git

git基本概念


四个工作区

在这里插入图片描述

Workspace: 工作区,就是你平时存放项目代码的地方
Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表
Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换


四种状态

在这里插入图片描述

Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified.如果使用git rm移出版本库, 则成为Untracked文件

Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过,返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改

Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified


本地操作


配置用户签名

方式一 (单个仓库有效)

git config user.name 用户名
git config user.email 邮箱

配置信息会保存在当前仓库目录下的.git/config文件中。


方式二 (全局有效)

git config --global user.name 用户名
git config --global user.email 邮箱

该种方式配置信息会保存在系统盘的系统用户目录下的.gitconfig文件中,保存格式同上面一样。


初始化仓库

git init

查看Git状态

git status

Git添加代码到暂存区

# 添加一个或多个文件到暂存区
git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
git add [dir]
# 添加当前目录下的所有文件到暂存区
git add .

Git提交代码

# 提交代码并加上备注信息
git commit -m "[message]"
# 提交指定文件
git commit [file1] [file2] ... -m "[message]"
# 直接提交 
# -a参数设置修改文件以后不需要执行 git add 命令,直接提交
git commit -am "[message]"

Git修改并提交代码

# 修改代码文件,查看状态
git status
# 再次添加到暂存区
git add filename
# 再次查看状态
git status
# 提交
git commit
# 查看版本信息
git reflog

Git版本切换

# 查看版本信息
git reflog
# 更加详细的显示
git log
# 切换版本
git reset --hard [版本号]

Git分支常用命令

# 查看分支
git branch -v
# 创建分支
git branch [新分支名]
# 删除分支
git branch -d [分支名]
# 修改分支
git branch -m [旧名字] [新名字]
# 切换分支
git checkout [分支名]
# 合并分支
git merge [分支名]

如何解决合并分支冲突

合并分支时,两个分支在同一个代码的同一个位置都有修改,Git无法判断,如何去留?

这个时候需要手动修改文件,修改完成后再次提交就合并成功了。


远程操作


创建别名

# 复制远程仓库的地址然后创建一个别名
git remote add myProject [远程仓库地址]
# 查看远程仓库地址和别名
git remote -v

推送本地库到github

# 推送分支到远程仓库
git remote [别名] [分支名]

# 上面的命令可能或报错:error: Unknown subcommand
# 用以下命令即可
git push [别名] [分支名]

第一次推送需要windows凭据,会自动弹出一个窗口,在浏览器中输入账户和密码即可。

如果出现10053错误,那么使用git config --global http.sslVerify false来解除https的ssl的凭证。

在提交的时候,有时候会出现这样的错误:

hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

这是因为在写代码之前,没有先更新本地项目造成的,所以我们得想办法先更新一下本地项目,但是我们又写了新的代码,有两种解决方案:

  1. 允许不相关历史提交,并强制合并

    git pull origin master --allow-unrelated-histories
    
  2. 强制提交

    git push --force origin master
    

拉取远程库到本地

git pull [别名] [分支名]

解决pull的时候速度慢:git config --global http.postBuffer 524288000


克隆远程库

git clone [url地址]

区别:

  • fork: 复制一份别人的仓库到自己的远程仓库中,后期可以使用pull request请求别人合并自己新增加的功能。
  • clone: 将别人的项目clone到自己的本地电脑中。
  • pull: 从远程获取最新版本并merge到本地。

团队内协作

邀请团队成员:

github项目->Settings->Collaborators->Manage access->Add people


跨团队协作

先fork一份到自己的github中,修改完毕以后,先提交,然后Create pull request给其它团队的管理者审核,对方同意以后,就可以合并。


github免密登录

  1. 在windows 用户目录下面找到.ssh 文件夹

  2. 在当前目录下面打开git命令行,输入以下命令生成密钥:

    ssh-keygen -t rsa -C [github邮箱]
    
  3. 复制id_rsa.pub中的内容

  4. 在github账号中配置,将复制的公钥粘贴到以下地址中:

    Settings->SSH and GPG keys

然后pull的时候就可以使用ssh,不需要输入用户名和密码。


JetBrains 的IDE集成Git和GitHub

集成Git


初始化本地库

集成Git

VCS->启用版本控制集成->确定

取消版本控制

设置->版本控制->选中项目点减号

添加忽略文件

在根目录创建一个.gitignore文件,然后将要忽略的文件添加进去。


集成Git切换版本

1.添加到暂存区

右键根目录->Git->添加

2.提交

右键根目录->Git->提交->写上备注信息->点击提交

3.查看版本

当提交多次以后,可以查看提交过的历史版本:

点击左下角的Git->Log

在这里插入图片描述
4.切换版本

右键要切换的版本,然后点击签出修订...,即可切换版本。

在这里插入图片描述
可以看到指针此时指向了v2。

如果要回到最新版本,右键最新版本,然后签出到master。


集成Git创建、切换分支、合并分支


创建分支

菜单->Git->新建分支…

切换分支

左下角->选择分支->签出

合并分支

首先切换到要合并的分支(一般是master)-> Git -> 合并 -> 选择分支 …

在这里插入图片描述


解决分支冲突

在这里插入图片描述
根据需要手动选择即可,第三个选项是自己手动修改。


集成GitHub


在ide中配置GitHub

文件->设置->版本控制->GitHub->点击+添加即可


推送项目到GitHub

共享项目到GitHub

Git -> GitHub -> 在GitHub上共享项目 -> 在描述中写上项目别名 -> 点击确定

在这里插入图片描述

push

  1. 修改代码并提交代码
  2. Git -> 推送

从GitHub 拉取项目

pull的目的就是获取项目的最新版本,并merge到本地。

Git -> 更新项目


从GitHub克隆项目

VCS -> 启用版本控制 -> Git -> 克隆


码云Gitee


Gitee简介

Gitee与Github功能类似,但是相比于github而言,gitee有两个优势:一是速度快,二是支持免费的私密项目。

官网

https://gitee.com/


JetBrains的IDE集成码云Gitee

1.添加插件gitee
2.登录码云
3.push
4.pull


Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐