zoukankan      html  css  js  c++  java
  • Git常用命令

    1、创建与修改用户名和邮箱地址:

      $ git config --global user.name "username"

      $ git config --global user.email "email"

    2、查看用户名和邮箱地址:

      $ git config user.name

      $ git config user.email

    3、显示当前目录

      $ pwd

    4、把当前目录变成Git可以管理的仓库

      $git init

    5、Git添加文件需要add、commit一共两步

      例子:

      $ git add file1.txt

      $ git add file2.txt file3.txt

      $ git commit -m "add 3 files."

      $ git add .   (添加所有修改)

      如果文件只是修改没有新添加的可直接通过参数 $ git commit -a -m "注释····"    来提交

    6、让我们时刻掌握仓库当前的状态

      $ git status

    7、Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:

      $ git diff readme.txt

    8、git log命令显示从最近到最远的提交日志

      $ git log

      退出按英文健Q;

      如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

      $ git log --pretty=oneline

    10、在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

      每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支;

      HEAD严格来说不是指向提交,HEAD指向的就是当前分支。

    11、回退到上一个版本

      $ git reset --hard HEAD^

      回到指定commit id的版本 

      $ git reset --hard 1094a   //1094a id前几位

    12、查看文件

       $ cat <file>

    13、查看历史命令

      $ git reflog

    14、概念:理解工作区与暂存区,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支;

      Git跟踪并管理的是修改,而非文件,每次修改,如果不用git add到暂存区,那就不会加入到commit中

    15、用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:

    16、git checkout -- file 可以丢弃工作区的修改:

      $ git checkout -- readme.txt

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

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

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

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

      $ git checkout .   撤销对工作区所做的一切更改,这样以前所有的修改就都没有,慎用!

    17、用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:

      $ git reset HEAD readme.txt

      $ git reset HEAD .  撤销了前面所做的所有的add操作

    18、删除文件git rm <file>

      $ git rm test.txt

      现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:
      另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:$ git checkout -- test.txt
      git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    19、添加远程库

      $ git remote add origin git@github.com:yangzishan/mydoc.git

    20、git查看远程仓库信息

      $ git remote -v 

    21、把本地库的所有内容推送到远程库上

      $ git push -u origin master

      由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令;

      此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

    22、从远程库克隆

      $ git clone git@github.com:yangzishan/mydoc.git

      Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

    23、创建分支dev,然后切换到dev分支

      $ git checkout -b dev

      git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

      $ git branch dev  (创建分支)
      $ git checkout dev   (切换分支)

    24、查看分支

      $ git branch

      git branch命令会列出所有分支,当前分支前面会标一个*号。

      $ git branch -a   //查看远程分支

    25、合并分支

      $ git merge dev

      git merge命令用于合并指定分支到当前分支

    26、删除dev分支

      $ git branch -d dev

    27、因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

    28、查看编辑 $ vi

    29、解决合并分支冲突:

      当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
      解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

    30、看到分支合并图

      $ git log --graph  

    31、合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

      例:准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward

      $ git merge --no-ff -m "merge with no-ff" dev

      因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

    32、储藏当前分支的工作 stash功能

      $ git stash

      查看用 $git stash list

      工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

      一是用$ git stash apply恢复,但是恢复后,stash内容并不删除,你需要用$ git stash drop来删除;

      另一种方式是用$ git stash pop,恢复的同时把stash内容也删了:

    33、如果要丢弃一个没有被合并过的分支,可以通过 $ git branch -D <name>强行删除。

    34、推送分支

      $ git push origin branch-name

    35、创建远程origindev分支到本地

      $ git checkout -b dev origin/dev

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

    36、从远程抓取分支

      $ git pull

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

    37、创建标签

      首先,切换到需要打标签的分支上:然后就可以打一个新标签:

      $ git tag v1.0

      查看所有标签:

      $ git tag

      默认标签是打在最新提交的commit上的,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?

      方法是找到历史提交的commit id,然后打上就可以了:$ git tag v0.9 f05fsdf3

      查看标签信息

      $ git show <tagName>

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

      $ git tag -a v1.0 -m "version 1.0" <commitid>

      删除本地库标签

      $ git tag -d v1.0

      推送标签到远程

      $ git push origin <tagname>

      一次向推送尚未推送到远程的本地标签

      $ git push origin --tags

      删除远程标签: 先从本地删除,然后

      $ git push origin :refs/tags/<tagname>

    38、删除已有的远程库:

      $ git remote rm origin

    39、一个本地库可以关联多个远程库,只要远程库的名字不一样即可

    40、配置,让Git显示颜色,会让命令输出看起来更醒目:

      $ git config --global color.ui true

    41、忽略某些文件时,需要编写.gitignore;

      在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件;

      使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。

      .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

    42、配置别名;比如用st代替status

      $ git config --global alias. st status

      --global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

     43 、生成 创建SSH Key

      $ ssh-keygen -t rsa -C "youremail@example.com"

      

  • 相关阅读:
    lower_bound/upper_bound example
    Counter Mode ( CTR )
    85. Maximal Rectangle
    for_each(c++11)
    Lowest Common Ancestor in a Binary Tree
    python--基础学习(五)参数位置传递、关键字传递、包裹传递及解包裹(*args与**kwargs)
    Python的方法解析顺序(MRO)
    pycharm配置总结
    Python中内置数据类型list,tuple,dict,set的区别和用法
    进程号查找
  • 原文地址:https://www.cnblogs.com/zishan/p/9112160.html
Copyright © 2011-2022 走看看