Git的安装及其配置

下载

通过淘宝镜像:

下载

进行安装,因为会自动配置环境变量,所以不需要手动去添加


Git Bash:Linux shell

Git CMD: Windows shell

配置

git config -l 查看当前配置

配置用户设置:

文件夹 - Git\et

设置

git config --global user.name ""  #名称

git config --global user.email ""   #邮箱

建立SSH 公钥

ssh-keygen  -t rsa 生成公钥

公钥注册到码云

项目创建

本地仓库搭建

当前目录建立一个git代码库
$ git init

克隆远程仓库

# 通过URL 克隆
$ git clone [url]

成功克隆项目

文件的四种状态

1.untacked:未跟踪,不参与版本控制 通过命令 git add 状态变为staged

2.unmodify:文件已经入库,且并未修改 被修改则成为modifild

使用git rm 移出版本库 成为 untacked文件

3.modifiled:文件已修改,通国git add 进入暂存区 staged 状态

使用 git checkout 丢弃修改 返回unmodify状态

4.staged:暂存状态 执行 git commit 将修改同步到库中 文件变为unmodify状态

执行 git reset HEAD filename 取消暂存,文件状态为modified

get status 查询当前文件状态

get add . 跟踪文件状态,添加所有文件到暂存区

git commit -m "提交信息" 添加到本地仓库

.gitignore文件下 忽略文件

# 忽略 `*.a` 文件
*.a
# 忽略 `*.A` 文件,但 `somefile.A` 除外.
*.A
!somefile.A

# 忽略 `*.b` 和 `*.B` 文件
*.[bB]
# 忽略 `*.c` 和 `*.C` 文件,但 `somefile.C` 除外.
*.[cC]
!somefile.C

# 只忽略 `somepath/` 目录(包括该目录下所有文件),但不忽略 `somepath` 文件
somepath/
# 只忽略 `somepath/` 一级子目录下 `*.txt`,但不忽略 `somepath/sub/*.txt` 文件
somepath/*.txt

# 忽略 `somepath` 文件和 `somepath` 目录
somepath
# 只忽略 `somepath` 文件,但不忽略 `somepath/` 目录
somepath
!somepath/

# 只忽略当前目录下的 `somepath` 文件和目录,但不忽略子目录的 `somepath`
/somepath

推送到远程仓库

git push origin master 将改动提交到远程仓库 master分支

git push

添加到暂存区-> commit 提交到本地仓库 -> git push到远程仓库

分支

分支常用操作

查看本地分支 git branch

查看远程分支 git branch -r

新建分支 git branch xx

新建分支并切换到该分支 git checkout -b xx

切换回主分支:git checkout master

再把新建的分支删掉:git branch -d feature_x
除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的
git push origin

更新与合并

要更新你的本地仓库至最新改动,执行:
git pull
以在你的工作目录中 获取(fetch)合并(merge) 远端的改动。
合并指定分支到当前分支 git merge [branch]

在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:
git add
在合并改动之前,你可以使用如下命令预览差异:
git diff

替换本地改动

可以使用如下命令替换掉本地改动:
git checkout --

假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin
git reset --hard origin/master

完整流程


2023/5/20 第三次整理回忆

可以直接在远程创建好仓库,然后通过git clone 克隆下来,再将.git文件放到我们的项目文件夹下,这样的话就形成了对远程仓库的关联了,省去了

git init 
git remote add git https://tmp/xx.git  # add git "git"是远程仓库名   /tmp/xx.git是远程仓库的地址,应该为url地址  使用这个命令会将当前目录的仓库和本地仓库形成关联

然后是推送

# 前面已经初始化了仓库,且添加了远程地址
#将当前目录的内容都添加到暂存态
git add .
# 提交到本地仓库 状态由暂存到入库态,也就是从修改->暂存->未修改
git commit -m "这是一个提交"

#这是第一次推送需要做的事情,更改推送的分支地址 
# -u指定本地指定的分支和远程分支的关联  因为我们前面的仓库名为git , 因此 -u先填git , 然后第一个master是本地的分支名称 第二个master是远程的分支名称
# 一般来说,码云和github创建的仓库的默认名称是 origin 因此这个命令应该是 git push -u origin master master
git push -u git master master 

#这是第二次推送,因为前面已经用-u参数规定好了关联的远程主机名git的分支地址,因此直接推送就好
git push origin master # 忽略了远程分支名,因为本地还能创建多分支,且在bash中也不知道你需要推哪个分支的内容到,比如我关联了分支a1->a,master->main ,那么我本地的a1分钟想推送,就得用git push origin a1 这样a1的本地分支的commit内容会推送到远程仓库a 

拉取远程仓库的代码到本地

# git pull 远程主机名 远程分支名:本地分支名 -f 可以强制拉取,有冲突会直接无视,采用远程的
git pull git master:master
# 只要下面这个也行,因为已经关联好了本地的分支与远程分支了,这边的原理和上面的推送类似,已经关联好了远程主机名和远程分支与本地分支的关系,指定远程主机名与远程分支的名称即可
git pull git master 
# 注意第二个git是远程主机的名,默认是origin
# 默认是合并 如果要变基价参数 --rebase

第一次使用

  1. git init //初始化仓库

  2. git add * //添加文件到本地仓库

  3. git commit -m "first commit" //添加文件描述信息

  4. git remote add origin + SHH地址 //链接远程仓库,创建主分支

  5. git pull origin master // merge:拉取最新的仓库状态

  6. git push -u origin master //推送到远程仓库

第一次绑定了分支后,后面直接用Git pull就行 不需要指定分支了。

git pull --rebase origin master //rebase:变基,将父节点进行的分支节点先逐步进行合并,在与本地分支错开的节点的远程分支上的所有提交的节点都得处理一次,然后自己在公共祖先的节点后提交的本地节点,会放到远程的最新节点后合并,形成单条的分支,适用于其他分支,减少merge合并的各种跳线,在其他分支可以使用,用到主分支的话需要保持尽量在最新节点,不然推送要处理很多次的冲突,比较麻烦。

git push -u origin master

解决方法

 posted on 2021-08-16 23:04    阅读(52)  评论(0编辑  收藏  举报