学习使用Git

学习使用Git

内容来源参考:https://www.liaoxuefeng.com/wiki/896043488029600

git 提交代码步骤:https://blog.csdn.net/dc282614966/article/details/89311683

1、Windows下的 git 基本操作

点击这里直接下载Windows系统里面的 git 软件。下载完毕后,打开git Bash,会出现命令行窗口,我们只需要在上面进行编写命令即可。

git 里面的一些命令主要是是在Linux 上面的一些命令,这里学习如何操作!

1.1 如何操作文件目录
命令操作代码命令操作代码
添加文件夹learngitmkdir learngit查看当前目录下文件dir/ ls (是L)
进入文件夹cd learngit添加文件touch r.txt
删除文件夹rm [-rf] 目录删除文件rm -rf 文件名
修改文件vi r.txt (本意用编辑器打开修改)
查看文件(最后一屏幕)cat s.txt
1.2 如何修改文件

当使用了命令"vi readme.txt"命令进入了vim编辑器后,按键盘上了i、o、a键均可开始进行修改(使用dd命令则表示删除改行,换行可以用enter,而键盘上的四个箭头可以控制光标的移动);当要退出修改时,则可使用如下命令,注意前面的冒号

:q  
//退出

:q! 
//退出且不保存(:quit!的缩写)

:wq
//保存并退出

:wq!
//保存并退出即使文件没有写入权限(强制保存退出)

:x
//保存并退出(类似:wq,但是只有在有更改的情况下才保存)

:exit
//保存并退出(和:x相同)

:qa
//退出所有(:quitall的缩写)

:cq
//退出且不保存(即便有错误)
1.3 git 版本回退和文件撤销修改
git checkout --readme.txt
//将版本回退到上一次提交的状态,提交时候的操作可能是git add,也可以是git commit。
//换句话说,你是用add,那么回退到工作区;用的是commit,回退到的是暂存区(此时应该还是在本地的时候,如果推送到远程,那就没办法了)
    
git reset --hard <版本号>
//作为版本回退
//HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
    
    git log
    //可以查看提交历史,以便确定要回退到哪个版本
    //查看当前窗口的版本号,意思当前窗口关了,就空了,这时候用下面的那个,是所有的
    git reflog
    //查看所有版本号
    //查看命令历史,以便确定要回到未来的哪个版本
1.4 git 删除文件及恢复
//首先,这里的删除指的是该文件已经提交到版本库
git rm t.txt
//这里是从版本库里删除,一旦删除之后,则不可恢复

rm t.txt
//这里是删除暂存区里面的,可以用checkout进行恢复,恢复的是版本库里面最新的那个
//(有可能你误删了修改好的那一次,但没有提交,故而会损失这部分修改)

1.5 查看工作区和版本库的最新版本的区别
//git add:负责将工作区的信息文件等提交到暂存区
//git commit:负责将暂存区的信息提交到版本库

//当你修改了工作区的文件,但是没有将其提交到暂存区
//而又将暂存区的内容提交到了版本库
//此时,可以通过下面命令,来查看最新修改和原来的差别在哪里
git diff HEAD -- readme.txt 
//readme.txt是泛指文件名

//结果可能如下所述:
$ git diff HEAD -- readme.txt 
diff --git a/readme.txt b/readme.txt
index 76d770f..a9c5755 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,4 @@
 Git is a distributed version control system.
 Git is free software distributed under the GPL.
 Git has a mutable index called stage.
-Git tracks changes.
+Git tracks changes of files.
1.6 git 推送到远程库 gitHub.com
//使用如下两个命令即可推送到远程库里面
//下面使用的ssh办法进行加密传输,除了ssh还有Https的办法,但是ssh的好处就是特别快

$ git remote add origin git@github.com:michaelliao/learngit.git
$ git push -u origin master
1.7 git 删除远程库
//如果添加的时候地址写错了,或者就是想删除远程库,可以用git remote rm <name>命令。
//使用前,建议先用git remote -v查看远程库信息:

$ git remote -v
origin  git@github.com:michaelliao/learn-git.git (fetch)
origin  git@github.com:michaelliao/learn-git.git (push)

//然后,根据名字删除,比如删除origin:
//origin 是远程库默认名字

$ git remote rm origin
1.8 git 克隆远程库
//后面需要改为需要克隆的仓库地址

$ git clone git@github.com:michaelliao/gitskills.git
1.9 git 分支基本操作
//   dev是分支的名字 

//查看当前分支
    git branch

//切换分支的两个办法
    git checkout master	//master是分支的名字
    git switch master
    
//创建分支(dev是分支的名字)
    git branch -c dev

//删除分支
    git branch -d dev
    
//查看分支图
    git log --graph
    //or
    git log --graph --pretty=oneline --abbrev-commit

//创建并切换到新的分支dev
    git switch -c dev
    git checkout -b dev
        
//合并某分支dev到当前分支
    git merge dev
1.10 分支管理
//处理分支冲突
当分支出现冲突的时候,需要把两个分支中不一样的东西修改为一致,然后再进行提交合并(add,commit,merge)

//合并方式1: Fast forward-->当进行此种方式合并,那么删除了分支之后,将不会再显现,即丢掉了分支信息
//合并方式2: 强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

//合并方式1具体操作:
$ git merge dev

//合并方式2具体操作:
$ git merge --no-ff -m "merge with no-ff" dev


//合并后,我们用git log看看分支历史:
$ git log --graph --pretty=oneline --abbrev-commit
1.11 多人协作 git
//使用命令查看远程库信息
git remote

//详细一点有
git remote -v

//向远程推送分支,origin是远程库的名字,dev是要推送到远程库的分支
git push origin dev

//当我们推送到远程库的时候,很有可能你的小伙伴的最新提交和你试图推送的提交有冲突,
//解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:
git pull

//如果git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:
$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.


连接成功后,需要自己在这边合并,解决冲突,然后再git push origin dev

查看远程库信息,使用git remote -v;

本地新建的分支如果不推送到远程,对其他人就是不可见的;

从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

1.12 git 创建标签(与commit版本号关联)
//为最新的版本创建版本号
git tag v1.0

//为版本号 f52c633 创建标签
git tag v0.9 f52c633

//查看有几个标签
git tag

//查看标签具体信息,v1.0是标签
git show v1.0 

//如果标签打错了,也可以删除:
//标签默认在本地
$ git tag -d v0.1
Deleted tag 'v0.1' (was f15b0dd)

//推送标签到远程库
git push origin v1.0

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

//然后,从远程删除。删除命令也是push,但是格式如下:

$ git push origin :refs/tags/v0.9
To github.com:michaelliao/learngit.git
 - [deleted]         v0.9
1.13 git 提交冲突


同步远程最新代码,开始工作...

git push产生冲突,说明有人先你一步同步了他的本地代码到远程。

这时候,你需要先拉取代码,可以使用命令

git pull , 该命令会将远程的提交和你本地的提交merge,如果有冲突需要手动解决并提交,会产生merge的记录

git pull -- rebase 该命令会把你的提交“放置”在远程拉取的提交之后,即改变基础(变基),如果有冲突
或者 git rebase master(推荐使用)
或者 git merge master 

解决所有冲突的文件,git add <冲突文件>

git rebase --continue

完美解决问题。

2、几个疑问

2.1 如何查看当前暂存区内的文件有哪些?
2.2 使用touch新建文件是在所有分支下都建立了该文件嘛?换言之,可以只在某个分支下单独建立文件嘛?

【不进行add或commit的工作区的文件是所有分支共用,但是版本库和暂存区不是!!】

确实可以,去电脑C盘文件目录查看,发现切换分支之后,不同分支出现的文件数量是不一样的。也就是可以在不同的分支单独创建文件,最后合并即可。

当创建了文件,一定要记得add和commit,不然的话,就不是在分支里面创建了(因为你没有提交,版本不会更新)。这样操作下来的话,不提交,只是更改了工作区的东西,所以工作区的东西是无论哪个分支都会有的。

2.3 使用 vi/vim runoob.txt即可创建一个文件,不管该存在与否

如果你想要使用 vi 来建立一个名为 runoob.txt 的文件时,你可以这样做:

$ vim runoob.txt

直接输入 vi 文件名 就能够进入 vi 的一般模式了。请注意,记得 vi 后面一定要加文件名,不管该文件存在与否!

2.4 git 的工作区文件提交到暂存区后,工作区还有该文件吗?

工作区仍然有该文件,以便后续的更改呀。如果关闭了git bash后,再次打开该文件,该文件的内容不变。

当工作区的内容提交到暂存区,关闭git bash后,暂存区的内容没有变化,仍可以继续 git commit。

这个时候就可以把工作区、暂存区、版本库三个看做是不一样的文件夹,各自的内容在无命令的驱动下互不相干;在有诸如add或commit的命令下,依次提交到另一个区。

2.5 工作区的内容没有提交(add和commit),会出现错误?
$ git checkout dev
error: Your local changes to the following files would be overwritten by checkout:
        ft.txt
Please commit your changes or stash them before you switch branches.
Aborting

这个意思就是说,工作区的ft.txt文件被修改过了,你不提交的话,就会丢失。然后他也不让你切换分支。

**出现错误的原因就是:**当前这个ft.txt的内容和版本库里面最新版本里的内容不一样,但是你又没有提交,所以报错。

解决办法:git stash(保存当前工作环境,后序可以进行恢复)

如果不用git stash恢复的话,工作区的文件内容为不恢复的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值