git 下载 安装

1.下载Git,官网地址:https://git-scm.com/,进入官网首页

在右下方的显示器中找到最新的版本下载,点击下载,跳转到下载页面

下载完成

2.安装Git

双击刚刚下载完成的安装文件,打开安装设置界面,点击“Next”

选择安装目录,点击“Next”

选择配置组件,默认即可,点击“Next”

设置开始菜单目录名,点击“Next”

选择默认编辑器,默认即可,点击“Next”

选择使用命令行环境,选择第二个选项,点击“Next”

choosing https transport backend选择默认,点击“Next”

配置行结束标记,选择默认,点击“Next”

配置终端模拟器,选择默认,点击“Next”

配置额外选项,选择默认,点击“Install”,进行安装

安装完成,默认点击“finish”,打开新版本信息

安装完成,在桌面会创建Git Bash快捷方式,在任意目录下右击鼠标

打开快捷方式

输入git

Git下载安装完成

git 工作中常用命令

Git常用命令汇总以及其它相关操作

--文件目录操作命

1 mkdir * 创建一个空目录 指目录名

2 pwd 显示当前目录的路径。

3 cat * 查看
文件内容

4 git rm * 删除**文件

--git初始化操作

git init 把当前的目录变成git仓库,生成隐藏.git文件。

git remote add origin url 把本地仓库的内容推送到GitHub仓库。

git clone git@url/test.git 从远程库克隆

git add * 把x文件添加到暂存区去。

git commit –m "*" 提交文件 –m 后面的是注释。

--git 克隆分支

1 git clone xxx.git 最简单直接的命令

2 git clone xxx.git "指定目录" clone到指定目录

3 git clone -b branchname xxx.git clone时创建新的分支替代默认Origin HEAD(master)

--查看命令

git status 查看仓库状态

git diff * 查看X文件修改了那些内容

git log 查看历史记录

git reflog 查看历史记录的版本号id(记录你的每一次命令,不论是否提交)

git log --pretty=oneline 如果信息量太多可以进行比较好的列表显示

--版本回退

1 git reset –hard HEAD^ 回退到上一个版本

2 git reset --hard HEAD~第几个 如果想回退到第3个版本,使用git reset –hard HEAD~3

3 git reset --hard 057d 回退到某一个具体的版本号

--撤销修改

1 git checkout file-name 恢复某个已修改的文件(撤销未提交的修改):

2 git revert HEAD 还原最近一次提交的修改:

3 git revert commit-id 还原指定版本的修改

--分支管理

git branch 查看本地所有的分支

git branch -a 查看远程所有的分支

git branch name 创建分支

git branch –d dev 删除dev分支

git push origin --delete dev 删除远程的dev分支

git branch -m dev develop 重命名分支

git checkout –b dev 创建dev分支 并切换到dev分支上

git merge dev 在当前分支上合并dev分支代

git push origin zyf-dev 把当前新疆的zyf-dev分支推送到远程库(远程仓库没有给分支则会新建立该分支)

git checkout — * 把XX文件在工作区的修改全部撤销。

git checkout master 切换回master分支

git push --set-upstream origin dev 提交修改并创建远程分支dev

--tag相关操作

git tag 列出所有的tag

git tag name 打轻量标签 name

git tag -d name 删除本地的tag

git push origin --delete tag name 删除远程的tag

git show name 查看tag信息

git push origin name 将tag提交到远程

--隐藏的文件

git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作

git stash list 查看所有被隐藏的文件列表

git stash apply 恢复被隐藏的文件,但是内容不删除

git stash drop 删除文件

git stash pop 恢复文件的同时 也删除文件

--查看远程库信息(git remote的用法)

git remote 查看远程库的信息

git remote –v 查看远程库的详细信息

git remote add name url 添加远程仓库

git remote rename oldname newname 重命名仓库

git remote rm 删除仓库

--将远程分支拉取到本地

1 方法一:git checkout -b 本地分支名x origin/远程分支名x

2 方式二:git fetch origin 远程分支名x:本地分支名x

--git pull操作

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并,基本的格式如下。

$ git pull <远程主机名> <远程分支名>:<本地分支名>

取回origin主机的next分支,与本地的master分支合并,需要写成下面这样

$ git pull origin next:master

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

$ git pull origin next

上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。

$ git fetch origin

$ git merge origin/next

在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。

Git也允许手动建立追踪关系。

git branch --set-upstream master origin/next

上面命令指定master分支追踪origin/next分支。如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

$ git pull origin

--git 设置大小写敏感

Windows上的Git默认是大小写不敏感的,这样多平台写作就可能会出现问题。Win上的Git设置为大小写敏感的命令如下

1 git config core.ignorecase false

--git 设置忽略文件或文件夹权限修改

1 git config core.filemode false

--创建追踪分支

不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。

$ git config --global push.default matching

或者

$ git config --global push.default simple (最好使用这种方式)

$ git branch --track master origin/master //在使用 git branch 命令时加上 '--track' 参数, 来手动创建一个追踪分支

--切换git 命令提示中文到英文

// ubuntu装的git不知道怎么就出现全中文的提示,不太好,果断切换到中文了,切换方法如下:

// 1:写入

echo "alias git='LANG=en_GB git'" >> ~/.bashrc

// 2:生效

source ~/.bashrc

--git 删除未添加到版本中的文件或者文件夹

git checkout 只能回退在版本中的修改或者删除, 对于新添加的文件是没有作用的, 也就是说, 新建的文件或者文件夹是:Untracked files, 要删除或者清理掉这些文件,需要使用 git clean 命令:

// 删除 untracked files

git clean -f

// 连 untracked 的目录也一起删掉

git clean -fd

// 连 gitignore的untrack 文件/目录也一起删掉 (一般这个是用来删掉编译出来的 .o一类的文件)

git clean -xfd

// 在使用清理 git clean之前,建议加上 -n 来先看看会删掉哪些文件,防止重要文件被误删

git clean -nxfd

git clean -nf

git clean -nfd

常出错误:

1:There is no tracking information for the current branch...

则说明本地分?支和远程分?支的链接关系没有创建,用命令:

git branch --set-upstream branch-name origin/branch-name。

2: ![rejected] dev -> dev (non-fast-forward) ... Updates were rejected because the tip of your current branch

推送失败,因为远程代码的最新提交和你试图推送的提交有冲突,解决办法也很简单,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送

3:CONFLICT (content): Merge conflict in . . .

nbsp;这回git pull成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突一样。解决后,提交,再push:

4: You are not currently on a branch, so I cannot use any

解决办法:git checkout master

5:Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.

上面的显示的意思是,有一个更新还没有反应到本地来,可能是别人往server上提交了一点东西。

可以使用git pull命令拿这些更新到本地来。

6:在执行 git push 时可能会看到如下消息:

warning: push.default is unset; its implicit value is changing in

Git 2.0 from 'matching' to 'simple'. To squelch this message

and maintain the current behavior after the default changes, use:

git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

git config --global push.default simpl

解决办法:‘matching’ 参数是 Git 1.x 的默认行为,如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。而 Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。

根据提示,修改git push:

1 git config --global push.default matching

再次执行git push 就行了。

7:You asked to pull from the remote 'origin', but did not specify:a branch. Because this is not the default configured remotefor your current branch, you must specify a branch on the command line.

解决办法:找到:.git/config 修改如下

1 [branch "master"]

2 remote = origin

3 merge = refs/heads/master

8:ERROR: Permission to user1/test.git denied to user2 fatal: The remote end hung up unexpectedly

 账户冲突,下面有针对讲解

9: 添加的ssh不起作用?

ssh 的添加一定要在root用户权限在添加,其他的权限不起作用,切记!

常用修改:

1:避免每次提交都输入用户名和密码

原因是使用了https方式 puh 在termail里边 输入 git remote -v 可以看到形如一下的返回结果

origin https://github.com/git/librarysystem.git(fetch)

origin https://github.com/git/librarysystem.git(push)

下面把它换成ssh方式的。

  1. git remote rm origin
  2. git remote add origin git@github.com:yu/demo.git
  3. git push origin

    2:添加忽略文件 .gitignore

    .gitignore配置文件用于配置不需要加入版本管理的文件。

    配置语法: "/" 开头表示目录; "" 通配多个字符; "?" 通配单个字符 "[]" 包含单个字符的匹配列表; "!" 表示不忽略(跟踪)匹配到的文件或目录;

    说明:git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;

    示例:(1) foder/
    忽略目录foder下的全部内容,不管是根目录下的 /foder/ 目录,还是某个子目录 /list/foder/ 目录,都会被忽略。

       (2) /foder/* 说明:忽略根目录下的 /foder/ 目录的全部内容;

       (3) /*!.gitignore

    !/fw/bin/

    !/fw/sf/

    说明:忽略全部内容,但是不忽略 .gitignore文件,根目录下的 /fw/bin/ 和 /fw/sf/

    注意问题: .gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把要忽略的文件纳入了版本库,就不起作用了。

    3:如何在同一台电脑上使用两个git账户

      问题描述:作为程序员有时候是有多个的项目,而且每个项目git的用户名,邮箱等,都不一样。就我来说,我在github上有一个账号,自己开发一些东西,同时我参与的也有项目需要连接别人的github账号,在我电脑上只有一个git客户端,本地一个身份用户,开始的时候我自己开发是用ssh方式,参与的项目的是用https连接,但是https每次都需要输入密码,非常不方便,所以想转成ssh连接,利用命令:

$ git remote rm origin

$ git remote add origin git@github.com:yu/demo.git

$ git push origin

转换成功,不幸的是push的时候出错了:ERROR: Permission to user1 denied to

这种情况的解决方式是方法,使用本地托管多个个ssh的密钥,不同的账号是用不同的密匙。

第一步:生成SSH Key

执行命令,如下图:

具体说明:

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

2 Creates a new ssh key using the provided email Generating public/private rsa key pair.

3 #输入将要保存的路径,我的默认为当前路径(/c/Users/zhaoyafei/.ssh/id_rsa),但是不能使用默认文件id_rsa,要添加新账户就要生起一个成新的好记的名字,例如id_rsa_work

4 Enter file in which to save the key (/c/Users/zhaoyafei/.ssh/id_rsa):

5 #输入回车后提示输入一个类似于密码的号,直接回车就行

6 Enter passphrase (empty for no passphrase):

7 Enter same passphrase again:

第二步:识别新的私钥

默认SSH只会读取id_rsa,所以为了让SSH识别新的私钥,需要将其添加到SSH agent  

1 ssh-add ~/.ssh/id_rsa_work

2 //该命令如果报错:Could not open a connection to your authentication agent.可执行 ssh-agent bash 命令后再执行ssh-add -l 看是否成功。

执行命令,如下图:

第三步:修改config文件

该文件用于配置私钥对应的服务器。内容如下:

1 # Default github (默认的)

2 Host github.com

3 HostName github.com

4 User git

5 IdentityFile ~/.ssh/id_rsa

6

7 # second user(work@gmail.com)

8 Host github_work

9 HostName github.com

10 User git

11 IdentityFile ~/.ssh/id_rsa_work

   这样配置,也就是使用hostname为github.com会根据用户名的不同,去使用不用的private key。github上,也可以添加对应的公钥。其实这个配置是关于ssh的与git无关,只是git使用的方式是ssh的方式。Host可随意,方便自己记忆,后续在添加remote是还需要用到。

第四步:将SSH key输入到GitHub网站中

将生成的id_rsa_work.pub输入到GitHub网站中就可以了,输入完成后单击Add key后,会看到git-tutorial已经被添加进去了。 配置完成后,在连接非默认帐号的github仓库时,远程库的地址要对应地做一些修改,比如现在添加abc帐号下的一个仓库test,则需要这样添加:git remote add test git@github-work:abc/test.git #并非原来的git@github.com:abc/test.git 这样每次连接都会使用id_rsa_abc与服务器进行连接。

  注意:github根据配置文件的user.email来获取github帐号显示author信息,所以对于多帐号用户一定要记得将user.email改为相应的email(work@mail.com)。我遇到的问题是本地单一用户,链接不同的github账号,所以用户配置可以采用全局配置。如果不同本地用户(不同的身份标识,即需要本地使用不同的用户名),那么git就不要使用有–global的配置,可以按照下面的方法:

1 1)设置局部的user.name和user.email

2 git config user.name "xxxxxx"

3 git config user.email "xxx@xxx.com"

4 2)设置全局的user.name和user.email

5 git config --global user.name "xxxxxx"

6 git config –-global user.email ""

题外话(相关概念)

Git - 版本控制工具

  Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 最近就迁移到 Git 上来了,很多 Freedesktop 的项目也迁移到了 Git 上。

Github - 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等

  作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。如前所述,作为一个分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按 钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。

GitLab - 基于Git的项目管理软件

GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。三者都是基于git的,可以说是git的衍生品.

git安装用法和常用命令的更多相关文章

  1. 图解git中的最常用命令

    图解git中的最常用命令 Git命令参考手册(文本版) git init                                                  # 初始化本地git仓库(创 ...

  2. git日常使用的常用命令总结

    git日常使用的常用命令总结 git 是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常 ...

  3. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令

    Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...

  4. linux下安装nginx以及常用命令指南

    安装nginx之前,要先在服务器上安装nginx运行所需要的依赖包 目录选择:一般选择 "/usr/local/" 1.安装PCRE库 离线安装包:https://pan.baid ...

  5. (Linux环境Kafka集群安装配置及常用命令

    Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...

  6. 版本控制-Git服务器搭建和常用命令使用

    Git是目前世界上最先进的分布式版本控制系统(没有之一).使用Svn的请参考<版本控制-svn服务器搭建和常用命令(centos 6.3)>,下面介绍Git的常用命令 常用命令 简单版 升 ...

  7. git开发流程、常用命令及工具、TortoiseGit使用及常见问题

    根据我最近使用git的一些经历,git是基于分支的版本控制工具,分支有远程分支和本地分支. 一.开发流程 - 从远程服务器的master,clone一份项目文件到本地,然后本地master的基础上br ...

  8. AngularJS 1.x系列:Node.js安装及npm常用命令(1)

    1. Node.js安装 1.1 Node.js下载 Node.js官网:https://nodejs.org 当前下载版本(含npm):Latest LTS Version: v6.10.3 (in ...

  9. git使用总结(常用命令)

    前言 写这篇文章的目的是让新手能够操作git管理自己的代码,可能你知道git的各种命令但是对其使用顺序并不熟,比如我.所以有必要整合一篇关于命令使用步骤的文章,图片用的人家的,也没询问让不让用,可能会 ...

随机推荐

  1. linux 实时监控网速脚本(转)

    #!/bin/bash ethn=$ while true do RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{pri ...

  2. annotation processor 为啥没有被调用?

    Android Studio 3.5 使用@AutoService(Processor.class)注册annotation processor Android Plugin for Gradle:  ...

  3. jetty源码下载

    jetty下载地址:https://www.eclipse.org/jetty/download.html Release         9.4.20.v20190813 .zip .tgz api ...

  4. linux tomcat 文件切割

    修改bin目录下catalina.sh if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT="$CATALINA_BASE&quo ...

  5. Linux performance monitor tool

    https://www.tecmint.com/command-line-tools-to-monitor-linux-performance/ https://www.tecmint.com/lin ...

  6. mac软件安装 for Mac

    Office 2019 for Mac 16.31(191110)官方原版安装包&激活 赠送Office 2016 16.16.16(191111) --------- https://www ...

  7. Docker-Compose简介及常用命令

    1.Docker-Compose简介 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.Docker-Compose将所管理的容器分为三层,分别是 ...

  8. nginx安装和命令

    1. nginx安装 1.1 mac上安装 brew search nginx brew install nginx 1.2 windows上安装 下载nginx.zip,解压到D盘,发送快捷方式到桌 ...

  9. Windows 10 安装MySQL

    1.下载MySQL官网:https://www.mysql.com/ 进入官网点击DOWNLOADS ->Community->DOWNLOADS (下载社区版) 2.安装MySQL 将下 ...

  10. 经典面试题之——如何自由转换两个没有继承关系的字段及类型相同的实体模型,AutoMapper?

    相信很多童鞋们都被问到过这个问题,不管是在面试的时候被问过,还是笔试题里考过,甚至有些童鞋们找我要学习资料的时候我也考过这个问题,包括博主我自己,也曾被问过,而且博主现在有时作为公司的面试官,也喜欢问 ...