Git简单指令介绍
1.git基础操作
一、初始化版本库
2.执行指定的指令,创建文件版本库
git init
二、向版本库中添加文件
1.然后查看状态,发现有些是绿的,有些是红的
git status
(1) Changes to be committed : 它表示已暂存(Staged)但尚未提交(Committed)的更改
(2)Changes not staged for commit:它表示存在已修改但尚未暂存的文件
(3)Untracked files:它表示存在未跟踪的文件
这些文件都可以通过下面指定进行添加所有文件:具体看想提交的内容
git add .
或者只提交一个目标文件
git add git add .\src\main\java\PersonalTest\yyaTest.java
三、提交文件
1.提交文件
# commit表示真正地纳入到版本库中
# -m 表示提交时的信息(message),是必须输入的。用于描述不同版本之间的差别信息
git commit -m "my first git file"
2.再查看Git状态
提交后,Git会对当前的操作进行Hash计算,通过计算后的值将数据保存下来,保存的位置为版本库.git文件目录的objects中,我们可以通过指令查看当前提交
git show
3.git 推送(推送本地仓库代码到远程仓库)
git push
4.git 更新(拉取远程代码到本地)
git pull
四、查看版本库文件历史
git log
1.如果感觉看着不舒服,也可以美化一下显示方式:
git log --pretty=oneline
2.我们还需要了解下git文件的5种状态
- 未修改(Origin)
- 已修改(Modified)
- 已暂存(Staged)
- 已提交(Committed)
- 已推送(Pushed)
五、回退操作
1.将已提交到本地仓库的最后一个提交回退到暂存区
git reset HEAD~
2.回退到指定的提交处(比如现在已提交5个,想回到倒数第三个)则操作如下:
(1)先找到倒数第三个提交的hash值
(2)然后执行回退 (注意:这个回退是回退了倒数第三个之后的提交,不包含第三个)
git log
git reset 3967afa1602d9c72e4f28a033f16abfbf0a4402e
3.将 已修改 但 未提交到本地库的文件 还原
(1)先查看修改了哪些文件
git status
(2)确定要回滚的文件,可以使用git diff
命令查看文件的具体修改内容
git diff
(3)回滚 暂存区 --> 工作区
git checkout -- .\src\main\java\PersonalTest\yyaTest.java
git checkout -- .\
2.git分支操作
一、git分支
(1)创建新分支
git branch b1
(2)切换分支(将工作线路切换到b1)
git checkout b1
(3)查看分支
git branch -v
(4)删除分支
git branch -d b1
二、git合并
(1)创建新分支b1并签出
git checkout -b "b1"
(2)新分支推送远程
git push origin "b1"
(3)将b1分支代码合并到master上
先签回主分支,然后执行命令
git checkout master
git merge b1
(4)cherry-pick
# 先切换到你已提交代码的分支
git checkout new_b1
# 查看那个提交的hash值 例如:273e86ec31f710231bdb8e0ecf843362112ffaff
git log
# 切回你要更改的那个分支
git checkout master
# 使用以下命令进项优选
git cherry-pick 273e86ec31f710231bdb8e0ecf843362112ffaff
# 直接推送远程
git push
(5)更新本地仓库和远程仓库
git remote update
三、git冲突
在多分支并行处理时,每一个分支可能是基于不同版本的主干分支创建的。如果每隔分支都独立运行而不进行合并,就没有问题,但是如果在后续操作过程中进行合并的话,就有可能产生冲突。比如B1, B2的两个分支都是基于master分支创建出来的。B1分支如果和B2分支修改了同一份文件的话,那么在合并时,以哪一个文件为准呢,这就是所谓的冲突。
(1)解决冲突:
# 合并a2
git merge a2
# 发生冲突报错
#查看冲突位置及内容
git diff
#手动解决
#添加 并提交推送
git add .
git commit -m "解决冲突"
git push
(2)查看git软件的操作日志
git log --graph