git的一些基本使用

工作中对于项目的管理主要是基于git的,学习git还是很重要的。。。。。。

Git的特点 

  • Git是分布式版本控制系统 
  • git的底层是用C来实现的 

Git相关参数的配置 用来指定自己的机器 

git config --global user.name “Your Name" 

git config --global user.email “Your email" 

 

Git仓库的建立 

mkdir path/filename 

cd paht/filename 

git init 

 

通过以上操作,就可以将本地的一个目录声明为git仓库,可以通过ls -a来查看当前目录下是否有.git隐藏文件,该文件是用来跟踪和管理版本库的,不可乱动。 

 

关于基本操作 

touch filename 

git add filename        //将filename添加到当前的仓库内 

git commit -m “tps”     //将添加到仓库内的文件提交到仓库内,其中tips是用来标记本次提交的提示信息 可以多次add然后一次commit 

git status    //用来显示当前仓库的状态,例如修改了当前的某个文件但是还未提交,就会提示修改了其中的某个文件 

git diff filename    //用来显示当前文件与之前的文件有哪些区别 

git log    //用来显示从最近到最远的提交日志 

git reset —-hard HEAD~num    //用来会退到之前的某个版本

git reset —-hard commit_id    //用来定位到某个确定的时间点

git reflog     //可以用来查看历史的每一次命令,同时可以查看对应的commit id

  • git log可以用来查看从当前时间点开始的所有commit的id,一般只需要前几位就可以
  • 当使用git reset之后,git log的输出结果也会产生变化,也就是说会导致如果后悔某次的回退操作,就会导致无法使用git log来查找到相关的commit id来进行回退

 

git库可以分为两个部分,一个为工作区,一个为版本库。其中版本库分为暂存区和分支区。 

  • 使用git add 操作就是将对应的file加入到暂存区 
  • 使用git commit就是将对应的节点加入到分支区 

 

例如,对于ReadMe.txt文件,先对其进行修改,然后使用git add将其加入到暂存区内,然后再次修改ReadMe.txt文件,这时使用git commit命令将暂存区内的文件提交到分支区,此时只有第一次修改的内容会被提交,第二次修改的内容则不会被提交;如果想要提交第二次修改的内容,则需要重新执行git add,将第二次修改的内容添加到暂存区,同时执行git commit将其提交 

git checkout —- filename    //将工作区内文件的修改进行撤销 

  • 如果对于此文件,还未添加到暂存区,则将分支区内的内容还原给工作区 
  • 如果对于此文件,已经添加到了暂存区,则将暂存区的内容还原给工作区

git reset HEAD filename    //可以将暂存区内的修改撤销,并回退到工作区 

注意以上几种撤销之间的区别: 

  • git reset —hard HEAD/commit_id 此命令使用来将工作区内的内容还原成分之区对应的节点 
  • git checkout -- filename 此命令是对工作区的修改进行撤销,需要判断暂存区内有无添加,是对应单个文件来说的 
  • git reset HEAD filename 此命令是将暂存区的添加内容进行删除,是对应单个文件,而且是针对暂存区的内容 

 

  • git rm + git commit可以用来删除分支区内的对应内容 

 

如果使用rm删除本地的相关内容之后的确要进行删除,则可以使用以上的命令来确定操作 

如果不是要进行删除,则可以采用git checkout —- filename命令将版本库内的内容还原到工作区 

 

通过将本地库与github上的库相关联实现分布式控制,github上的库与本地的库之间进行传输采用的是ssh加密的方式。即本地库的私钥和hub的公钥钥进行配对。 

ssh-keygen -t rsa -C "youremail@example.com”    //用来生成对应的公钥和私钥 

上述命令可以在.ssh目录下生成两个文件,id_rsa和id_rsa.pub两个文件,分别表示一对私钥和公钥,其中公钥需要添加到github仓库中,这样的话,只有具有对应的私钥的用户才可以对项目中的内容进行修改。 

 

  • 在本地的仓库执行以下命令,可以将本地仓库与hub上的仓库进行绑定 

git remote add origin git@github.com:<yourid>/<name.git>       //origin表示远程库的名字,一般默认情况下使用这个名字    <yourid>表示你的github名称    <name.git>用来表示与本地仓库相绑定的仓库 

  • 在本地仓库执行以下命令,将本地仓库的内容推送到远程库上 

git push -u origin master    //origin表示需要推送的远程库的名称    master表示需要推送到的分支    -u表示第一次添加时将本地的master分支推送到远程库的master分支,还会将本地的master分支与远程库的master分支相关联 

 

git push origin master    //将本地的master推送到远程库中与其对应的分支上 

 

  • 将远程库clone到本地库 

git clone git@github.com:<yourid>/<name.git>    //将远程库拷贝到本地库 

     

关于分支

所谓分支,就是一段时间链,每个节点保存了对应提交的内容,而HEAD默认是指向了master,master是一个指针,指向了主链的最新节点。 

  • 创建并切换分支 

git checkout -b dev    //创建dev分支并切换到dev分支,所谓创建就是新建了一个dev指针指向当前的最新节点,所谓切换就是将HEAD转而指向dev指针 

此指令相当于

git branch dev    //创建dev分支

git checkout dev    //切换到dev分支

使用git branch来显示当前库内包含的分支

当前分支前会有*标注

 

  • 合并分支

git merge <branchname>    //将<branchname>指向的分支合并到当前分支

 

  • 禁止使用Fast Foward模式

git merge —no-ff -m “tip” <branchname>    //通过禁止使用Fast Foward模式,可以在删除分支后保留分支的信息

 

  • 删除分支

git branch -d <branchname>    //将<branchname>指向的分支删除

 

  • 查看分支图

git log --graph    //使用此命令可以查看分支变化图 

 

  • 保存当前的工作信息 

git stash    //此命令可以将当前分支的内容压栈进行保存,然后就可以切换到其他的分支 

 

对于 git push origin master这种,可能会产生冲突,此时可以先采用git pull将库的内容拉下来,然后在本地解决冲突之后再进行push操作。 

 

  • 合并多人协作的冲突

git Rebase

 

关于标签

git tag <tagname>    //可以为最近的commit打上标签

git tag    //可以显示当前的所有tag

git tag <tagname> commit_id    //为指定的commit打上标签

git tag -a <tagname> -m “tip” commit_id    //为指定的commit打上标签和说明性的文字

git show <tagname>    //显示指定tag的说明性文字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值