Git简介
开源的分布式版本控制系统
# 安装
sudo apt install git
常用的基本操作
# 下载远程库代码
git clone <网址> # 当http连不上时,把http改成git
git clone -b <分支名> <网址>
# 切换分支与新建分支
git branch -av # 查看所有分支
# 选项
# -a, --all list both remote-tracking and local branches
# -v, --verbose show hash and subject, give twice for upstream branch
git branch branchName # 创建分支
git checkout branchName # 切换分支
git checkout -b branchName # 创建并切换到分支,等同于上面两条
# 添加新文件到工程
git add <file1> <file2> # 可添加一个或多个文件到
# 查看是否有未提交的修改(包括新建文件和修改文件)
$ git status
# 查看具体的修改内容,删除的内容为红色减号,增加的内容为绿色加号 以行为单位,提示
git diff # 所有修改
git diff <file1>
# 提交修改
git commit <file1> <file2> -m "message" # 提交一个或多个文件的修改 -m 注释提交的原因
git commit -a -m "message" # 提交所有修改
# 查看提交日志
git log
git log --pretty=oneline # 每条commit用一行显示 分布式控制,避免版本冲突,因此commitID不是1234
git reflog # 记录每一次的命令,可以查看干掉的日志,查看历史版本号/命令
# 回退
# 方式一:reset
git reset --hard HEAD^ # 回退:HEAD表示当前版本 一个^表示上一个,两个^表示上上个,HEAD~100表示上100个
git reset --hard <刚干掉的版本号> # 回退到指定版本号,比如错误回退后,可以根据版本号再还原回去
# 方式二:revert
git revert -n <版本号>
# 上传远程与更新本地
git push [选项] origin <分支名> # 将<分支名>推送到origin主机的对应分支
# 选项
# -f 强推
# -u 如果当前分支与多个主机存在追踪关系,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push
# 拉取
git fetch <远程主机名,如origin> <分支名> # 拉取
git pull <远程主机名,如origin> <分支名> # 拉取并merge
# 合并分支
git merge <要合并到本分支的分支名>
# 恢复误删分支
git branch <分支名> <hash_val>
创建与配置本地仓库
# 创建仓库目录
$ mkdir repo_test1 && cd repo_test1
# 初始化
$ git init
# 这时,会在该目录下创建一个 .git 目录用于跟踪管理版本库,并提示
Initialized empty Git repository in [自己的目录]/git_test/repo_test1/.git/
# 配置仓库所有者信息
# Omit --global to set the identity only in this repository.
$ git config --global user.email "you@example.com"
$ git config --global user.name "Your Name"
关联本地与远程仓库
先有远程仓库
- 建立远程仓库
- git clone 到本地仓库
先有本地仓库
( 待补充… )
关联本地仓库与远程仓库
关于回退
- 回退方式一:git reset,适用场景:最近几个错误版本全部舍弃
- 回退方式二 :git revert,适用场景:回退中间某个版本,保留最近版本
!!! git reset –hard 撤销到某次提交,git revert 撤销某次提交,一般建议用revert
# 查看提交日志
git log --pretty=oneline
# 回退方式一 git reset
$ git reset --hard <版本号>
# 推上去,使用reset时,如果用不加选项“-f”会报错,因为本地库HEAD指向的版本比远程库的要旧
$ git push -f origin <分支名>
# 回退方式二 git revert
$ git revert -n <版本号>
# 推上去
$ git push origin <分支名>
# 更新本地
$ git pull
修改历史commit
https://blog.csdn.net/lxf0613050210/article/details/52525083 每一个commit都要单独修改。迫不得已不要修改,需要强制commit
摘抄
master & origin/master
在 clone 完成之后,Git 会自动为你将此远程仓库命名为 origin(origin 只相当于一个别名,运行 git remote –v 或者查看 .git/config 可以看到 origin 的含义),并下载其中所有的数据,建立一个指向它的 master 分支的指针,我们用 (远程仓库名)/(分支名) 这样的形式表示远程分支,所以 origin/master 指向的是一个 remote branch(从那个 branch 我们 clone 数据到本地),但你无法在本地更改其数据。
同时,Git 会建立一个属于你自己的本地 master 分支,它指向的是你刚刚从 remote server 传到你本地的副本。随着你不断的改动文件,git add , git commit,master 的指向会自动移动,你也可以通过merge(fast forward)来移动 master 的指向。
————————————————
原文链接:https://blog.csdn.net/weixin_34075268/article/details/85869357
pull & clone & fetch
从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程)
从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)
git pull相当于是从远程获取最新版本并merge(合并)到本地 git pull = git fetch + git merge,git fetch更安全一些
————————————————
版权声明:本文为CSDN博主「zhou_xiaomiao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhou_xiaomiao/article/details/53185712git fetch 将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
git pull 将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。