一、基础
git clone
克隆远程分支
git clone http://192.168.0.45/spade2/spade.git
拉取远程分支在spade目录
git clone http://192.168.0.45/spade2/spade.git spadeV2
拉取远程分支在spadeV2目录
git pull
从远程仓库下载更新内容
git add .
添加所有文件到暂存区
git commit -m "feat: bug修改"
提交暂存区中的修改到本地仓库
git commit -am "feat: bug修改"
提交代码到本地仓库
约等同于
git add
和 git commit
命令组合添加到暂存区并提交到本地仓库。但该命令不会提交未进入版本管理的的文件。 未进入版本管理的新文件必须通过 git add
命令添加在暂存区才能提交。
git push
约等于推送当前本地分支到远程分支
以上大概能处理到一个简单的拉取、修改、提交本地仓库、推送远程的流程。
二、撤销本地代码修改
1、还未将变更加入到暂存区,即未执行 git add
命令前,可以使用 git checkout
命令来撤销修改,命令如下
git checkout -- <file>
比如:
git checkout -- *.txt
git checkout -- a.txt
也可使用
git checkout .
撤销所有文件修改
2、已将变更加入到暂存区,即已经执行了 git add
命令,可以使用 git reset HEAD
命令先从暂存区中移除文件,命令如下:
git reset HEAD <file>
比如
git reset HEAD rainbow.txt start.txt
从暂存区中移除 rainbow.txt start.txt等文件
git reset HEAD *
从暂存区中移除所有文件
git reset HEAD *.txt
从暂存区中移除所有txt格式文件
后续就可以使用 git checkout
命令撤销修改。
三、分支命令
1、查看分支
git branch
查看本地分支列表
git branch -r
查看远程分支列表
git branch -a
查看本地分支和远程分支
输出 :wq
退出查看模式
2、创建新分支
git checkout -b newB
创建newB分支并切换到该分支
相当于
git branch newB
创建newB分支
git checkout newB
切换到newB分支
3、推送新分支到远程
第一步 git push origin newB
推送本地分支到远程
第二步 git branch -u origin newB
建立本地分支和远程分支关联,也就是跟踪分支
或者
git push -u origin newB
推送本地分支到远程并跟踪分支
4、拉取本地不存在的远程分支
比如远程仓库存在一个分支feature/bugfix1,本地仓库不存在该分支,但需要拉取该分支到本地仓库修改,则可执行
git checkout -b 本地分支名x origin/远程分支名x
5、切换分支
git checkout rng
切换到本地rng分支
如果要切换到某个git提交节点可执行
git checkout commitId
commitId为git提交节点ID
6、合并分支
git merge branchName
把branchName分支合并到当前分支,比如当前分支在rng分支,则代表把branchName分支合并到rng分支
如果在合并过程中碰到冲突,想取消合并,则可执行
git merge --abort
如果合并成功,但想撤销合并,则可先切到主分支,然后执行
git revert -m 1 commitId
四、贮藏
贮藏是一个非常实用的操作,比如我们在分支A修改了很多代码文件,然后来一个紧急任务需要去分支B修改,如果没有用贮藏,那么切换到分支B的前提,是在分支A把之前的修改内容提交或者丢弃,但这两种情况可能都不是我们想要的。 我们想要的是保留A分支的修改同时也不用提交到A分支。这时候我们就可以把A分支的修改内容贮藏起来,既可以保留修改也不用提交修改到分支中。
比如现在在A分支执行
git stash
则该命令会把所有的在A分支的修改内容添加到贮藏,同时A分支的修改也被撤销,这时候就可以安全的切换到
B分支。
在B分支处理完工作后,想继续回到A分支处理之前的修改,则可以切换到A分支执行
git stash apply
把贮藏区的修改应用到A分支
这时候贮藏可以丢弃
git stash drop
也行执行
git stash pop
直接应用贮藏并立刻从贮藏栈上丢弃它,相当执行了 git stash apply
和 git stash drop
假如很多分支都贮藏过修改,那么贮藏区中就不止有一份贮藏,执行
git stash list
则可查看有哪些贮藏
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
贮藏是以栈的形式保存的
git stash apply
默认使用最近的贮藏信息,相当于 git stash apply stash@{0}
git stash drop
同理相当于 git stash drop stash@{0}
也可以使用其他贮藏,如 git stash apply stash@{2}
五、回滚、重置、撤销等
1、撤销某次提交
git revert commitId
2、重置分支到某个提交节点
git reset --hard commitId
强制回滚到此次提交
git push --force
或者 git push -f
强制push
强制合并 git reset --hard commitId
混合合并 git reset --mixed commitId
软合并 git reset --soft commitId
以上三种合并方式的区别可参考SourceTree的软合并、混合合并、强合并区别_souttree-CSDN博客s
git reset
默认模式是混合合并
git reset HEAD *
回退到当前版本并把暂存区的中文件退回到工作区中,后续可用 git checkout
命令撤销修改
git reset HEAD~1
回退到前一个版本
git reset HEAD~n
回退到前n个版本
git reset commitId
回退到指定版本
注:HEAD
代表当前当前版本指针,同理于当前版本的commitId
六、标签(tag)
git tag -a v2 -m "tag msg"
创建一个名称为v2的tag,并备注tag信息
简化命令
git tag v2
git tag -a v2 commitId
基于某个提交点创建tag
git push origin v2
推送tag到远程服务器
git push origin --tags
推送本地所有tag到远程服务器
git checkout -b [branchname] [tagname]
基于tag创建分支
七、git相关信息查看
1、查看当前仓库
git remote show origin
git remote -v
2、查看文件状态(哪些文件修改或者暂存了)
git status
git status -s
简单格式输出文件状态
git diff
查看未暂存的文件修改
git diff --staged
查看已暂存的文件修改
3、查看日志
git log -p -2
产看最近两次提交差异
git log --pretty=oneline
查看提交记录
git reflog
查看本地引用日志