git一些常用的命令

下面记录了一些git常用的命令,记录一下,备忘。

git remote 查看远程版本库名称

git remote -v   查看远程版本库详细地址

git remote show origin 

git remote remove name    删除名称为name远程版本库

git remote add origin url   其中origin为名称  后边为对应的地址 

git remote rename 原名称  新名称

git branch -a  查看所有的分支

git branch -l  查看本地分支

git branch -r 查看远程分支

git branch --set -upstream=origin/master  指定当前本地分支的远程upstream分支

git config --global push.default simple  设置当前push的模式是simple

git branch 分支名称   git创建本地分支

git push origin 本地分支名称:远程版本库分支名称

例如:git push origin roland:roland   将本地roland分支的内容push到远程版本库的roland分支

从图中能够看出本地仓库roland-->远程版本库的roland ,如果远程仓库不存在roland分支,则会创建roland分支(在push.default为simple的状态下)。

同时需要注意,在roland分支下push到远程版本库中的分支的名称需要和本地版本库分支名称一致(也就是roland)

这是因为推送规则是由git config中的push.default属性决定的,在Git 2.0之前,该值为matching,2.0以后为simple.

push.default有以下几个可选值:

nothing、current、upstream、simple、matching  他们的主要用途解释如下:

    nothing:push操作无效,除非显式指定远程分支。
    current:push当前分支到远程同名分支,如果远程同名分支不存在则自动创建同名分支。
    upstream:push当前分支到它的upstream分支上。
    simple:simple和upstream是相似的,只有一点不同,simple必须保证本地分支和它的远程upstream分支同名,否则会拒绝      push操作。(注意必须同名)
    simple只会推送本地当前分支。

    matching:push所有本地和远程两端都存在的同名分支。

个人理解:upstream需要手动设置本地分支的upstream分支,或者在push之前的pull操作,已经确定了本地分支的upstream分支,因为pull的过程中本地分支相当于远程分支的downstream,因此是不是已经默认了当前本地分支的upstream分支就是pull下来的远程分支呢?

在这之后,想查看本地roland分支的upstream是谁,使用以下命令:

git branch -vv  显示如下图:

图中看到的是origin/master,也就是说roland本地分支的upstream是远程版本库origin中的master,这和我理解的upstream为啥不太一样呢。(以后解除自己的误解后会更新)

删除远程分支:

git push --delete origin roland   删除远程版本库origin中的roland分支,在Gitblit上查看分支状态。发现只有一个master分支了。

git merge 分支名称   将该分支和当前所在分支合并

git checkout -b 分支名称  //新建立分支并立即切换过来

git checkout -- file  //撤销对文件的更改

正常的创建分支并切换可能会分两步进行:

(1)git branch 分支名称

(2)git checkout 新创建的分支名称 

git fetch origin  //从中抓取本地没有的数据

回退到历史版本:
通过git reflog查看所有的历史版本
git reflog
git reset --hard 对应的历史版本-->通过git reflog获取

git reset HEAD <file> //可以将暂存区的修改撤销掉,重新放回工作区。

//git reset命令不仅可以回退版本,还可以将暂存区的修改回退到工作区,当时用HEAD时,表示的是最新版本。

将修改推送到远程

**********************************************继续添加一些内容*******************************************

git本地的三个区域:

working directory:工作区、编辑代码的区域
Staging area:暂存区 相当于是工作区和历史仓库之间的一个缓冲,代表需要提交的一个状态

history repository:历史仓库

git add:将工作区的文件添加到暂存区
git commit:将暂存区的文件添加到历史仓库里
git status:查看工作区和暂存区之间的区别
git rm:删除暂存区中不需要的东西
git mv:移动或者重命名文件

git ignore:忽略一些不需要添加到暂存区或者历史仓库中的文件

git pull = git fetch + git merge
git merge的两种用途:
1.用于git pull中,来整合另一端代码仓库中的变化(git pull = git ftech + git merge)

2.用于从一个分支到另一个分支的合并。

git merge dev  比如我现在所在分支为master  新的分支dev是用于修改程序的分支  这个相当于是将dev分支合并到master分支。git merge之前一定要将所有文件先commit掉。

git merge --abort  合并过程中存在冲突,回退到合并之前的状态。

*************************************************记录一些新的理解****************************************

查看别人的博客看到了几个比较好的图,记录一下,以便更好地理解。引用地址为:https://segmentfault.com/a/1190000004992316

除此之外,还有一张更详细的图片,描述的更细致,也摘抄了下来。

看过图解之后,没弄明白git clone和git fetch的区别在哪儿,于是在git Bash中通过git --help命令查看,如下图:

fetch      Download objects and refs from another repository  //从另一个库下载对象和引用
clone      Clone a repository into a new directory   //克隆库进入新目录

翻译后大致理解了

Git使用规范提醒:

  • 使用Git过程中,必须通过创建分支进行开发,坚决禁止在主干分支上直接开发。review的同事有责任检查其他同事是否遵循分支规范。

  • 在Git中,默认是不会提交空目录的,如果想提交某个空目录到版本库中,需要在该目录下新建一个 .gitignore 的空白文件,就可以提交了

  • 把外部文件纳入到自己的 Git 分支来的时候一定要记得是先比对,确认所有修改都是自己修改的,然后再纳入。不然,容易出现代码回溯

  • 多人协作时,不要各自在自己的 Git 分支开发,然后发文件合并。正确的方法应该是开一个远程分支,然后一起在远程分支里协作。不然,容易出现代码回溯(即别人的代码被覆盖的情况)

  • 每个人提交代码是一定要 git diff 看提交的东西是不是都是自己修改的。如果有不是自己修改的内容,很可能就是代码回溯

  • review 代码的时候如果看到有被删除掉的代码,一定要确实是否是写代码的同事自己删除的。如果不是,很可能就是代码回溯

非常感谢上边列出的博主的文章,还是要在实际使用过程中加深理解。

再有新的git命令会继续更新,并且后续分类总结,之前的疑惑在清楚之后会添加到上边,希望大家多批评指正,大家一起学习,共同进步。

猜你喜欢

转载自blog.csdn.net/Rolandcoder/article/details/79638391
今日推荐