git学习笔记——git常见操作

文章目录

    • 一、 在分支开发并提交到远程对应分支的完整流程:
    • 二、git push
    • 三、git rebase
    • 四、git clone、git pull、git fetch
    • 五、git中的文件状态
    • 六、git reset的三种用法

一、 在分支开发并提交到远程对应分支的完整流程:

1、先在本地分支git rebase -i来合并提交
可参考此链接git学习笔记——git常见操作_第1张图片
上面的提交顺序是前面的先于后面的提交(即第一行的提交是第二行的父提交)
将需要压缩的提交pick改为s后esc、wq后会跳出下面的修改,提交信息后保存退出
git学习笔记——git常见操作_第2张图片在这里插入图片描述
上面可以看到我将两条commit合并成了一条commit
2、切换回master分支git pull拿下最新的提交
在这里插入图片描述

3、切换回开发分支并rebase
git学习笔记——git常见操作_第3张图片

4、git pull再git push

在这里插入图片描述

git学习笔记——git常见操作_第4张图片

git常用指令

git branch branch_name 创建分支
git branch 查看本地分支
git branch -a 查看本地和远程分支
git checkout branch_name 切换分支
git checkout – file_name 撤销修改
git checkout -b 新建并切换到此分支
git merge branch_name 合并指定分支到当前分支
git branch -d branch_name 删除本地分支

添加链接描述
30分钟教你轻松使用Git做代码管理

二、git push

1、将指定本地分支推送到指定远程分支
git push < 远程主机名 > <本地分支名 >: <远程分支名>

git push origin master:refs/for/master 
git push origin HEAD: refs/for/master

2、 git push origin master
3、 git push origin :refs/for/master == git push origin --delete master
4、git push origin
5、git push
添加链接描述

三、git rebase

Git分支管理技巧-使用rebase让你的分支笔直生长
Rebase
廖雪峰的git教程

git rebase -i
添加链接描述

Git 基础 - 撤消操作
git reset HEAD是从暂存区到工作区的撤销(详细的请看后面的链接)
git checkout是从本地版本库到工作区的撤销
Git 基础 - 远程仓库的使用
从远程仓库拉取到本地:
git clone
git fetch + git merge或git pull
git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
推送到远程仓库:
git push < remote > < branch >

git push origin master

只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 不然的话要先git pull合并之后使得远程仓库的最新commit id是本地的父系commid id。
如果当前分支跟踪了远程仓库的某个分支则直接git pull后可默认推到到跟踪的分支。

四、git clone、git pull、git fetch

git clone复制远程仓库的所有文件及其提交历史(commit id),会在当前目录新建一个目录(目录名默认为url的最后一个目录名或者自定义目录名),目录有一个隐藏目录.git,除了这个.git外的这个目录下所有文件都是工作区的内容。也就是git clone之后工作区有远程仓库的所有内容;

我们可以通过-b 来指定要克隆的分支名,比如

git clone -b master2 ../server 

表示克隆名为master2的这个分支,如果省略-b 表示克隆master分支。

git fetch是将远程仓库最新内容拉取到本地版本库,实质上是改变FETCH_HEAD,.git目录下有一个FETCH_HEAD的文件,每一行指向某个远程分支的最新提交。git fetch后需要git merge后才会出现在工作区;
git pull等同于git fetch和git merge直接将远程仓库的内容拉取到本地工作区,不过前提是要先合并,自动合并不了的话需要手动合并冲突,过程是:git satsh、git pull、 git stash pop、 git diff。(.git里除了stage/index和local repository外还有一个stash栈区)
git clone、git pull和git fetch的用法和区别

五、git中的文件状态

untracked:工作区新建的文件,本地仓库没有记录,没add
unstaged(changes not staged for committed):工作区修改过的内容没add
changes to be committed:add进暂存区的文件没有commit
暂存区的文件可以git commit提交到本地仓库或者git reset HEAD < file >让文件变成unstaged状态。
本地工作区的文件可以git push到远程仓库或者git checkout – < file >将版本库中的文件检出到工作区discard changes(放弃修改)

六、git reset的三种用法

git reset本质是改变HEAD和当前branch的指向
注意: 如果改变了文件名是恢复不了的

###撤销git add
git reset HEAD#撤销本地当前所有的add操作
git reset HEAD -fileName#撤销本地当前某个文件/目录的add操作
####撤销git commit
git reset --soft HEAD^#撤销 git commit,撤回上个版本(撤销当前commit/撤回一次)
git reset --soft HEAD~1
git reset --soft HEAD~2#撤回二次(限于两次commit操作)
#####撤销本地修改
git reset --hard HEAD
git reset --hard HEAD^ #回退上一个版本,回滚到上一个版本,工作区、暂存本地库都回退到上一个版本

git add和git commit 撤销操作
添加链接描述

你可能感兴趣的:(git学习笔记,git)