分享一些git最基本常用的命令和使用方法!

git作为作为一个免费开源的代码库管理工具,它无疑受众广大,且功能也非常强大!我这边分享一些个人平常用的比较频繁的命令。

在最开始,我们先将本机的ssh Key和你的github账号关联在一起。这样你才有权限对你账号下的远程仓库R/W。

  1. 打开你的git bash,输入 cd ~/.ssh

  2. 输入cat id_rsa.pub ;那串以ssh-rsa开头的字符串就是你的ssh Key。

  3. 登录github,点击头像->Settings->SSH and GPG keys->New SSH key,将前面的那串字符串复制粘贴进去,再给他起个名字就行了。
    在这里插入图片描述
    在这里插入图片描述

我们先按照一个项目的流程来讲吧。

  1. 首先,先为项目建一个独立的文件夹。

  2. 开启git bash,利用它来完成shell命令。

  3. 先将该文件夹初始化为git管理项目。使用命令:git init。

  4. 接下来登录我们的github。在github创建一个新的仓库,复制下它的ssh地址,格式大概是git@github.com:xiaoliu/test.git这种格式。如果是已有项目(该项目仓库里已有文件)直接记下它的ssh地址就行了,但得先确保你有对这个项目的R/W权限,即你必须是这个项目的创建者,或者合作者(collaborators)。例如图:James用户拥有本项目的R/W权限。

在这里插入图片描述

  1. 回到我们的本地项目。先将该本地项目关联github上的远程仓库,也就是上一步我们创建的那个。使用命令:git remote add origin(这个是你给远程库起的一个别名) 远程仓库地址(刚刚记下的那个ssh地址)。

  2. 项目关联好了以后,如果远程库里本来就有文件和分支,我们先拉取master分支的内容。使用命令:git pull origin(这个就是刚刚的别名) master --allow-unrelated-histories。

  3. 接下来我们将本地的master分支与远程库的master分支关联在一起。使用命令:git branch --set-upstream-to=origin(刚刚的别名)/master master。如果远程库还存在着其他分支,我们可以在本地创建一样的分支,再与远程库的关联。

  4. 接下来我们就可以开始提交代码到github了。先使用命令:git add 你要提交的有变化的文件 ; 然后:git commit -m “对本次提交的声明,就是你本次提交的变化是什么” ; 最后:git push ; 这样就将你的代码push到远程库。但是它push的只是当前分支。push其他分支:git push 分支名。

以上就是一个比较简单的git项目流程了。接下来说一些其他的命令。

  1. 前面提到过的分支。创建dev分支,然后切换到dev分支:git checkout -b dev(-b参数表示创建并切换,相当于git branch dev+git checkout dev)。用git branch命令查看当前分支,会列出所有分支,当前分支前面会标一个*号。切换分支:git checkout master。

    1.1)合并分支:git merge命令用于合并指定分支到当前分支。例git merge dev会把dev分支提交的工作合并到当前分支(master)。

    1.2)删除分支:git branch -d dev(-D可强制删除未合并的分支,分支上的修改将丢失)

    1.3)冲突:(两个分支对同一内容的不同修改)

    ·当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
    
    ·解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
    
    ·用git log --graph命令可以看到分支合并图。
    
  2. 获得当前项目状态:git status。

  3. 查看文件具体变化情况:git diff filename.txt

    用git diff HEAD – filename.txt命令可以查看工作区和版本库里面最新版本的区别

    注:git diff 是只比较比较工作区和暂存区(最后一次add)的区别,git diff --cached 是只比较暂存区和版本库的区别,git diff HEAD – filename 是只比较工作区和版本库(最后一次commit)的区别。

  4. 查看提交历史,以便确定要回退到哪个版本:git log

    查看命令历史,以便确定要回到未来的哪个版本:git reflog

  5. 回退到前1个版本(修改前):git reset --hard HEAD~1 或者 git reset --hard HEAD^

    回退到前n个版本:git reset --hard HEAD~n

    通过版本号回退或前进:git reset --hard 890bb5(undo,redo)

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

    例:git reset HEAD filename.txt将已保存暂存区的修改回退到工作区(修改还在,只是回到工作区了)

  6. 命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

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

    总之,就是让这个文件回到最近一次git commit或git add时的状态。

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

  7. 删除文件:git rm test.txt,如果删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:git checkout – test.txt

    总结:1.如果你用的rm删除文件,那就相当于只删除了工作区的文件,如果想要恢复,直接用git checkout – 就可以 2.如果你用的是git rm删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区,需要先git reset HEAD ,然后再git checkout – 3.如果你想彻底把版本库的删除掉,先git rm,再git commit 就ok了

  8. git stash:将当前做到一半工作存储起来(当前分支,未提交),去做其他事,例如去修bug
    git stash list:查看所有存储起来的没做完的工作
    git stash apply恢复做到中途的工作,但是恢复后,stash内容并不删除,你需要用git stash drop来删
    git stash pop,恢复的同时把stash内容也删
    git stash apply stash@{0}:恢复指定stash

  9. 标签:tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。类似于IP与域名
    打标签:git tag v1.0 默认标签是打在最新提交的commit上

    $ git tag v0.9 f52c633:为commit ID 为f52c633打标签
    

    还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

    $ git tag -a v0.1 -m "version 0.1 released" 1094adb
    

    git tag查看所有标签

    git show 查看指定标签的信息

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

    推送某个标签到远程,使用命令git push origin

    一次性推送全部尚未推送到远程的本地标签:

    $ git push origin --tags
    
  10. 最后说一个与你本机的ssh Key和github账号的问题。查看本机ssh关联了哪个账号可以用命令:ssh -T git@github.com。这样在终端就会显示出该ssh key所关联的账号。一个ssh key只能关联一个github账号,一旦你想切换关联账号,就必须先把原来的关联账号里的ssh key删掉,才可以在另一个账号里关联该ssh key。其实不必关联来关联去的,无非就是要获得一个项目的R/W权限,可以直接让项目的拥有者将你的账号加入collaborators,这样你就拥有该项目的R/W权限了。添加方法:在github点入该项目->Settings->Collaborators->搜索要加入的账户名->add collaborator。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值