Git的基本使用与语法汇总

推荐学习Git的地址:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

常用操作:
例:拉取远程分支代码与本地分支代码合并:
远程分支:feature/v1
本地分支:feature/abc/v1

1. git checkout feature/v1 
//  若本地没有feature/v1分支,则创建一个:git checkout -b feature/v1 origin/feature/v1(同时建立与远程分支的连接)

2. git pull 
// 拉取远程的feature/v1分支上的代码(本地的feature/v1与远程的feature/v1已建立连接)
// 若拉取失败,说明未建立连接,执行git branch --set-upstream-to feature/v1 origin/feature/v1
 
3. git checkout feature/abc/v1	 //切换分支

4. git merge feature/v1  //合并分支
// 若有冲突,git status查看发生冲突的文件,手动解决冲突即可。

报错信息:

1.git bash无法输入内容:

此时终端实际上是可以输入内容的,只是看不到,解决办法:

//输入
reset 回车 //具有清屏效果

2.git pull提示no tracking information

说明本地分支和远程分支的连接关系没有创建,用命令

git branch --set-upstream-to dev origin/dev

//附:创建远程origin的dev分支到本地
git checkout -b dev origin/dev
//这样本地的dev分支就和远程的dev分支连接

常用命令:

pwd //查看当前目录

ls -ah //查看当前目录下的文件,包含.git文件

git init // 初始化一个git仓库

git status //查看当前哪些文件被修改

git diff //即查看difference,可以查看哪些内容被修改

git log //查看提交的历史记录

git log --pretty=oneline //每条历史只显示一行,反馈结果包含commit id(版本号)
该版本号用一串16进制数表示,目的是为了解决多人开发造成版本号冲突。

git diff HEAD -- 文件名 //查看某个版本下某个文件修改的情况

git diff HEAD^ -- 文件名
//查看上个版本修改的内容

git diff 版本号 -- 文件名 //根据版本号查看修改内容

git checkout -- 文件名 //丢弃工作区的修改

git rebase //把本地未push的分叉提交历史整理成直线

git add -f dist //强制提交被.gitignore忽略的文件

git branch -m dev develop //分支改名

cat README.md //查看文件内容

rm -rf .git //删除本地仓库

git push origin master -f //远程推送失败(强制推送)

git remote add origin git地址 //远程连接

git clone git地址 //克隆项目

git checkout 分支名 //切换分支

git branch 分支名 //创建新分支(必须置于commit之后)

git branch -d dev //删除本地分支

git push origin -d dev //删除远程分支

git config user.name //查看用户名

git config user.email //查看邮箱
将文件放入Git仓库(两步):
git add 文件名  /*将文件添加到暂存区*/

git commit -m "描述" /*将暂存区的所有内容提交至当前分支上*/

版本回退(不区分大小写):

前提:未推送到远程

当前版本:HEAD。

上一个版本:HEAD\^。

上上个版本:HEAD\^\^。

往上100个版本: HEAD~100

//回退到上个版本
git reset --hard HEAD^
版本恢复:

恢复到回退前的版本就必须知道之前版本的版本号。通过git reflog查看你使用过的每一个命令:

git reflog //可以获取之前版本的commit id

git reset --hard commit_id //恢复到之前的版本
撤消工作区修改:
  1. readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

  2. readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态

git checkout -- readme.txt
撤销暂存区修改:
git reset HEAD readme.txt // 此时回到工作区

git checkout -- readme.txt // 撤销工作区修改
删除版本库中的文件
git rm 文件名

git commit -m "delete"

//误删文件恢复
git checkout -- 文件名

git rm相当于在工作区删除文件,因此使用git checkout可以撤销对工作区的操作,但文件只能恢复到最后一次提交前的状态。

附:
1.区别:
git commit -am 和git commit -m:

git commit -am 可以看成是git add 和git commit -m

git fetch和 git pull

git pull 等同于 git fetch和git merge

2.连接远程:
git remote add origin git地址 //关联远程仓库

git push -u origin master //第一次推送master分支的所有内容

git push origin master //此后推送最新修改
3.分支操作:
//创建分支并切换
git checkout -b dev

//等价于

git branch dev
git checkout dev

//查看当前分支
git branch

//合并分支
git merge dev

//删除分支(无法在当前分支下删除当前分支)
git branch -d dev

4.解决冲突
//master分支修改readme内容
git checkout master
git add readme.txt
git commit -m 'modify'

//dev分支修改readme内容
git checkout dev
git add reaadme.txt
git commit -m 'modify'

//merge
git checkout master
git merge dev //出现冲突

1.打开冲突文件,会自动标出冲突位置,如:
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> dev
手动修改此处的内容
2.git add readme.txt
3.git commit -m "merge"

//此时master分支已解决冲突,dev分支直接通过:
git merge master即可
5.Fast forward模式

合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

使用–no-ff禁用Fast forward模式

git merge --no-ff -m "merge with no-ff" dev
//此次合并生成一个新的commit,因此需要添加commit的描述

形如:
image

使用Fast forward模式:
image

6.修复Bug分支

现在在dev分支上开发,但代码未提交,需要切换到master分支上去修复Bug。

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除。

git stash   //储存当前工作状态

git status  //working tree clean

git checkout master //创建临时分支解决冲突

git checkout -b temp //修改冲突

git add readme.txt

git commit -m 'fix bug'

git checkout master

git merge --no-ff -m 'bugfixed' temp

git branch -d temp //删除临时分支

git checkout dev //切换回原分支

git stash list //查看之前存储的工作状态

//状态恢复的两种方式:
1. git stash apply, 但stash内容并不删除,需要用git stash drop删除

2. git stash pop,恢复的同时把stash内容也删了

//可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash
git stash apply stash@{0}
7.删除feature分支
git checkout -b feature/v1 //创建一个新分支

git add readme.txt

git commit -m "new" //添加新功能

git checkout master

//feature/v1分支多余,需删除

git branch -d feature/v1 //报错

git branch -D feature/v1 //强行删除即可
8.多人协作

远程仓库名称: remote

git remote // 查看远程库信息

git remote -v //查看详细信息
origin  [email protected]:michaelliao/learngit.git (fetch)
origin  [email protected]:michaelliao/learngit.git (push)
//显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。
9.创建标签
git tag v1.0 //v1.0标签会打在最新的commit上

git tag //查看所有标签

git tag v0.9 f52c633 //针对具体的commit id打tag

git show v0.9 //查看具体的标签信息

git tag -a v0.1 -m "version 0.1 released" 1094adb //创建带有说明的标签,用-a指定标签名,-m指定说明文字

git tag -d v0.1 //删除标签

git push origin v1.0 //推送某个标签至远程

git push origin --tags //一次性推送全部尚未推送至远程的本地标签

//删除远程的tag
git tag -d v0.9 //先删除本地的tag
git push origin :refs/tags/v0.9
10.本地仓库与远程的gitLab和gitHub连接
配置sshKey

git remote add gitlab 远程仓库名

git remote add github 远程仓库名

//非git remote add origin 远程仓库名

git remote -v //查看连接的远程仓库

//推送代码
git push gitlab master
git push github master

猜你喜欢

转载自blog.csdn.net/qinchao_qbsh/article/details/82426262