Git是啥&咋用

0. 常见操作

0.1 同步本地仓库至远程新仓库

第一步:建立git仓库,cd到你的本地项目根目录下,执行git命令
git init

第二步:将项目的所有文件添加到仓库中
git add .

第三步:将add的文件commit到仓库
git commit -m "注释语句"

第四步:将本地的仓库关联到github上 (尽量用SSH的地址)
git remote add origin git@github.com:***/test.git

第五步:上传github之前,要先pull一下,执行如下命令:
git pull origin main

第六步,上传代码到github远程仓库,第一次上传使用-u可以将本地分支和远程分支关联起来
git push -u origin main

0.2 同步远程仓库/分支至本地新仓库

仓库:
git clone git@github.com:***/test.git

分支:

  1. 查看所有远程分支
    git branch -r

  2. 进入本地文件夹
    git init
    git remote add origin git@github.com:XXXX/nothing2.git

  3. 拉取远程分支
    git fetch origin <远程分支名>

  4. 建立本地分支
    法1:使用该方式会在本地新建分支x,并自动切换到该本地分支x,建立映射关系
    git checkout -b <本地分支名> origin/<远程分支名>
    法2:使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout,无映射关系
    git fetch origin 远程分支名x:本地分支名x

  5. 拉取远程分支内容到本地
    git pull origin <远程分支名>

0.3 更新文件

git add .
git commit -m "注释语句"
git push origin main

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

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

0.4 同步分支

branch分支内容 合并到main主干

1、进入主分支

git checkout main

git pull origin main

2、查看所有分支是否都pull下来了

git branch -a

3、使用merge合并开发分支

git merge [branch]

4、查看合并之后的状态

git status

5、有冲突的话,通过IDE解决冲突;

6、解决冲突之后,将冲突文件提交暂存区

git add 冲突文件

git add . (提交所有文件)

7、提交merge之后的结果
git commit -m "备注内容"

8、本地仓库代码提交远程仓库
git push origin master

0.5 删除文件

 git pull origin master  # 将远程仓库里面的项目拉下来
 dir  # 查看有哪些文件夹
 git rm -r --cached picture  # 删除picture文件夹
 git commit -m "删除了picture文件夹"  # 提交,添加操作说明
 git push origin master  # 将本次更改更新到github项目上去

1. 理论

分布式版本控制工具

1.1 一些原理和概念

  • Repository(Repo) 仓库
    版本库又名仓库,存储项目相关文件,包括本地仓库和保存在远程服务器的远程仓库,仓库间可以相互同步
    origin通常代表远程仓库

  • Commit 提交
    Git中会有频繁的提交,这里的提交实际上是通过记录项目的变动实现的,而不是每次的记录项目的全部内容,即,每一次新的提交是建立在最近一次提交的基础之上

比如按提交的时间顺序排列存在c1,c2,c3,c4。现在假设离现在最近一次提交是c4,那么不可以在c1和c2,或者c2和c3,或者c3和c4之间提交,只能提交成c5,然后Git通过记录c5和c4之间的差别,来记录这个c5提交

  • Branch 分支

分支C4
为了在不破坏版本系统一致性的前提下保存它们后来的变异,引入了新的描述子,这个新的描述子,就叫做分支

  • Merge 合并
    如果同时修改同一段代码,则不能进行自动合并,需要手动解决 Conflict 冲突
    HEAD的意思你可以理解为当前的工作目录,它总是指向最新的提交,所以用了HEAD(头部)这个词

    • Push 推送
  • Pull 拉取
    从远程服务器拉取文件

  • Amend 修改
    修改原有的提交,最好对本地代码使用

  • Stash 暂存
    将当前未提交代码保存至stashes,代码重新回到未修改前,使用pop恢复暂存修改

  • Rebase 变基
    合并的一种,将原有的分支嫁接到另一个,不保存修改历史,并fast- forward到最新提交

  • Checkout 迁出
    回到之前的版本,此时head会回退

  • Undoing 撤退
    undo,redo本地操作;Revert远程代码

2. 操作

Code

\\ 配置基本用户信息
git config --global user.name <用户名>
git config --global user.email <邮箱地址>

\\ 创建新仓库
git init

\\ 从远程服务器克隆仓库
git clone <url>

\\ 显示当前工作目录下的提交文件状态
git status

\\ 将指定文件Stage(标记为将要被提交的文件)
git add <file_path>

\\ 将指定文件Unstage
git reset <file_path>

\\ 查看修改内容
git diff <file>

\\ 创建一个提交并提供提交信息
git commit -m "<message>"

\\ 显示提交历史
git log

\\ 向远程仓库推送(Push)
git push

\\ 从远程仓库拉取(Pull)
git pull

\\ 修改上一个提交
git commit -amend - m "< New Message>"

查看所有分支
git branch

创建新分支
git branch <brach name>

切换分支
git checkout < branch name>
git switch < branch name>

在本地新建分支并切换到该分支
git checkout -b [本地分支名]
git switch -c  [分支名]

重命名分支
git branch -m <old name> <new name>

删除分支
git branch -d <brach name>

合并指定分支到当前分支
git merge <brach name>

将分支变基到master(需要先切换到分支)
git checkout <brach name>
git rebase master

使用快进将分支合并到master
git checkout <brach name>
git merge -ff-only master

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
git merge --no-ff -m "merge with no-ff" dev

终止这一次提交的合并
git merge --abort

将为提交的修改暂存(Stash)
git stash save "<Message>"

将上一个暂存的修改恢复并从暂存列表中删除
git stash pop

签出指定的提交
git checkout <commit hash>

撤销旧提交
git revert <commit hash>

查看本地仓库中所有的操作
git reflog

版本回退
git reset --hard commit_id

git checkout -- file_name
把文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。

3.0 安装

a. 下载git

For Mac:

  1. 一是安装homebrew,然后通过homebrew安装Git,
    Install homebrew if you don't already have it, then:
    $ brew install git

  2. 从AppStore安装Xcode(推荐)
    运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

安装完成后,还需要最后一步设置,在命令行输入:

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

b. 设置SSH key

ssh-keygen -t rsa -C "email" # email为你在github上注册的邮箱

找到id_rsa.pub,并将内容复制到Github账户setting中

Ref

https://www.liaoxuefeng.com/wiki/896043488029600
https://www.jianshu.com/p/6969de20cd52
Git Doc
Pull/ Push
从安装到SSH Key 到各种操作

posted @   ciyou  阅读(125)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示