Git入门知识点

       Gitlab/Github等分布式系统对于程序员来说应该不算陌生,但是其原理也需要我们仔细了解,活学活用。在初次接触git直到现在能算作入门,中间跳了不少的坑,下面就将平常工作中总结的一些命令做个记录。

 

1. Git 是什么?

    首先我们需要了解一下Git的工作原理,可以总结成下图。

    各部分的功能:

        workspace:本地工作区,也就是你可以在本地直接修改代码的地方。

        index(stage):缓存区,使用add命令可以将文件的改动放入到Index中。

        Repository:本地仓库,使用commit命令可以将文件改动提交到本地仓库。

        Remote:远程仓库,使用git push命令可以提交到远程仓库。

 

2.如何在本地建立repository:

    在想要建立repository的地方输入如下命令进行配置:

        git config --global user.name “你的用户名”

        git config --global user.email “你的email”

 

3. 常用的git命令:

       git add file_name:如果对新建/修改了文件,则可以使用这条命令将其增加到index中。

       git checkout --<file_name> :如果想要放弃当前在工作去中某个文件的修改,可以使用此命令对该文件的修改进行撤销。

       git reset HEAD <file_name> :如果想要撤销已经add到index中的修改,可以使用这条命令进行撤销。

       git reset --hard HEAD:撤销当前所有工作区的修改。

       git commit -m "comment you want to write when you commit your changes":用来将add进stage的改动提交到本地仓库,可以在 -m 参数后加上自己这次commit内容的一些解释。

      git status:查看当前git的状态,例如增加/删除了哪些文件,对哪些文件进行了修改,或者哪些文件已经被add进stage等。

       git diff <file_name>: 查看工作区内对file_name 文件中做出的修改

       git diff:查看工作区中所有修改的地方。

       git log:查看git的提交日志。

       git log --pretty=oneline:每一行显示一个之前的提交记录(查看方便)。

       git checkout branch_name:切换到名为branch_name 的分支

       git stash:如果对当前的分支进行了修改,但是需要临时切换到其他分支去解决bug,则可以使用这条命令将当前的改动压入stash中(类似于栈),等到fix bug之后再回来接着进行修改。

      git stash list:显示当前stash中缓存的更改记录。

      git stash pop:将当前stash顶端的修改记录恢复到工作区,同时stash中的记录被删除。

      git stash apply:将stash顶端的修改记录恢复到工作去,但是不删除对应的记录。如果需要删除,则再执行git stash drop命令即可。

      git  branch:显示当前都有哪些分支,当前所在的分支前面会有 “ * ”。

      git  branch branch_name:新建名为branch_name的分支(但是不进行分支切换)。

      git checkout branch_name:切换到名为branch_name的分支,如果当前branch_name这个分支不存在,则会报错。

      git checkout -b branch_name:新建名为 branch_name的分支,并且切换到该分支。

      git branch -d branch_name:删除名为branch_name的分支,注意,不能删除当前你所在的分支,也就是说你要删除分支B,而你当前处于分支B,则需要切换到其他分支,然后再删除B分支。

      git push origin:将当前的分支提交到Remote,即远程仓库。注意你当前的分支和远程对应的分支进行了链接。如果没有链接需要输入以下命令(以当前分支名为dev举例):git branch --set-upstream dev origin/dev。

      git fetch:将远程分支的最新内容拉到本地,但是fetch之后本地工作区是看不到变化的,此时本地会多一个名为FETCH_HEAD的指针,checkout 到该指针后可以查看远程分支的最新内容。如果想要合并最新的改动,可以执行git merge命令,但是如果有冲突的话,需要解决冲突,然后commit对应的改变。

     <<<<<<=======>>>>>>:在当前分支做了修改,然后merge主分支时,如果有冲突的话,则文件中会出现左边这三种符号,它们含义如下:<<<<<<和======之间表示的时主分支修改的内容,>>>>>>和======之间表示的是当前分支修改的内容。

      git merge dev:如果当前处于master,新建立了分支dev,增加了一个文件,并commit到repository了。如果想在master分支上也增加对应的改动,那么可以checkout 到master,然后使用 git merge dev,将dev上的改动增加到master中,其实是把master分支移动到了dev分支所在的地方,并移动了HEAD指针(HEAD指针指向当前的分支),这种方法叫做faster-forward。如下面两张图所示就是git merge 前后的变化。

图引用自:https://yanhaijing.com/git/2017/07/14/four-method-for-git-merge/

     git merge --no-ff  -m "comment" branch_name:如果不想使用fast-forward方法进行merge,可以增加 --no-ff 参数进行约束,这种合并方法会在master分支上新建一个提交节点,从而完成合并。如下面两图所示。

     git pull:git pull作用相当于 git fetch + git merge,但是如果远程的改动和本地工作区的改动有冲突的话,仍然需要通过fetch和merge进行合并,并解决冲突,然后才能commit本地的改动。

     git reflog:使用此命令可以获取到版本号,可以回退或者forward到某个版本。

      

    目前接触到的git命令大概就这些,在后续使用git时,如果有接触到新的git命令,再及时更新。

    能力有限,若叙述有误,还请各位看客指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值