git命令大全 一、一般配置 二、基本操作 三、分支操作 四、添加远程的仓库 git常用命令

Git常用命令

请确保已经安装里git客户端
git命令大全
一、一般配置
二、基本操作
三、分支操作
四、添加远程的仓库
git常用命令
  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库
 

1.查看信息

git --version   //查看git的版本信息
git config --global user.name   //获取当前登录的用户
git config --global user.email  //获取当前登录用户的邮箱

2.登录git

/* 如果刚没有获取到用户配置,则只能拉取代码,不能修改  要是使用git,你要告诉git是谁在使用*/

git config --global user.name 'userName'    //设置git账户,userName为你的git账号,
git config --global user.email 'email'

3.创建一个文件夹

mkdir nodejs    //创建文件夹nodejs
cd nodejs       //切换到nodejs目录下

4.初始化git仓库

git init //在nodejs文件夹下初始化一个仓库,此时文件里会到一个.git的隐藏文件夹

5.创建忽略文件

touch .gitignore    //不需要服务器端提交的内容可以写到忽略文件里
    /*
        .git
        .idea
    */

6.查看目录

ls -al

7.创建文件并写入内容

注:如果文件不存在则会创建文件

echo "hello git"
 > index.html       //将'hello git' 写入到index.html中
//单个>箭头表示写入, >>表示追加

8.查看文件内容

cat index.html

二、基本操作

1.增加到暂存区中

git add index.html
git add -A      //全部添加到缓存区

2.增加到版本库中

git commit -m '备注信息'

3.查看版本

git log --oneline

4.比较差异

//比较的是暂存区和工作区的差异
git diff 

//比较的是暂存区和历史区的差异
git diff --cached

//比较的是历史区和工作区的差异(修改)
git diff master

5.撤回内容

//1.在git add之前,可以手动撤销 或者用暂存区中的内容或者版本库中的内容覆盖掉工作区

//用暂存区中的内容或者版本库中的内容覆盖掉工作区
git checkout index.html

//2.在commit之前,可以把暂存区的修改撤销掉

//取消增加到暂存区的内容(添加时)
git reset HEAD index.html

//3.提交到版本库,可以用版本回退

6.删除本地文件

rm fileName

7.删除暂存区

//保证当前工作区中没有index.html
git rm index.html --cached

8.回滚版本

//回滚指定的一个版本 
git log
git reset --hard commit_id

//回滚到上一个版本
git reset --hard HEAD^

9.回滚到未来

git reflog
git reset --hard commit_id

三、分支操作

1.创建分支

git branch dev

2.切换分支

git checkout dev

3.创建分支并切换分支

git checkout -b dev

4.删除分支

git branch -d dev

5.在分支上提交新的版本

git commit -a -m 'dev1'

6.合并分支

git merge dev

7.分支的合并后显示log

git log --oneline --graph --decorate

8.在分支开发的过程中遇到其他问题需要切换其他分支

保留写好的内容在切换到主干

git stash 

9.在次切换分之后需要应用一下保留的内容

git stash apply

10.丢掉保存的内容

git stash drop

11.使用并丢掉

git stash pop

12.合并分支把树杈掰到主干上

git rebase

四、添加远程的仓库

1.推送到远程仓库

-u参数 upstream

git push origin master -u   //获取最新代码

2.连接远程仓库

git remote add origin 仓库的地址

3.查看远程仓库

git remote -v

4.删除远程仓库

git remote rm origin





git常用命令

安装及配置:

Ubuntu下安装:sudo apt-get install git
配置用户名:git config --global user.name "你的名字"
配置e-mail:git config --global user.email "你的邮箱@xx.com"

与添加有关的:

将当前目录变为仓库:git init
将文件添加到暂存区:git add 文件名 [可选:另一个文件名]
将暂存区提交到仓库:git commit –m "描述"

与查询有关的:

查询仓库状态:git status
比较文件差异(请在git add之前使用):git diff 文件名
查看仓库历史记录(详细):git log
查看仓库历史记录(单行):git log --pretty=online 或 git log --online
查看所有版本的commit ID:git reflog

与撤销有关的:

撤销工作区的修改:git checkout -- 文件名
撤销暂存区的修改:git reset HEAD 文件名
回退到历史版本:git reset --hard 该版本ID
回退到上个版本:git reset --hard HEAD^
上上版本是HEAD^^,也可用HEAD~2表示,以此类推

与标签有关的:

为当前版本打标签:git tag 标签名
为历史版本打标签:git tag 标签名 该版本ID
指定标签说明:git tag –a 标签名 –m "标签说明" [可选:版本ID]
查看所有标签:git tag
查看某一标签:git show 标签名
删除某一标签:git tag –d 标签名

与GitHub有关的:

先有本地库,后有远程库,将本地库push到远程库

关联本地仓库和GitHub库:git remote add origin 网站上的仓库地址
第一次将本地仓库推送到GitHub上:git push –u origin master

先有远程库,后有本地库,从远程库clone到本地库

从远程库克隆到本地:git clone 网站上的仓库地址

1.git init命令:用于初始化一个已经存在git仓库或者创建一个空的本地仓库。

         ssh连接方式在提交和拉取代码的时候不需要输入密码。

         http需要每次输入密码。

2.git clone命令:克隆远程仓库到本地仓库

         git clone [url]  将地址上的代码克隆到当前文件夹

         git clone [url] [文件名]  新建文件夹,并将地址上的代码克隆到此文件夹

3.git remote命令:管理相关的远程仓库。

        git remote add +ssh 连接远程仓库

        git remote --v 查看详细remote

4.git status:显示工作区的状态

5.git log:记录提交日志(注意只记录提交日志,存在于远程仓库与本地仓库),

6.git reflog:记录所有分支的所有操作(所有操作,包括分支切换等,只存在使用者的本地仓库)

7.git config:修改/查看git配置信息

        /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。

        ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。

        当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

         git config --global user.name 'aiguo.sun'    修改该用户的用户名

        git config user.name 查看用户名

8.git diff:显示不同的提交,不同工作区域,不同分支之间的差别。

         git diff:工作区与暂存区的不同(显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异)。

         git diff --cached 与git diff --staged 显示暂存区与本地仓库之间的不同。

         git diff + 两个日志编号  显示两次提交的不同

         git diff + 两个分支  显示两个分支 的不同

9.git add:工作区提交到暂存区(跟踪文件)

         git add 文件名,将该文件提交到暂存区

         git add *.c 把.c文件提交到暂存区

10.git commit:暂存区提交到本地仓库

         git commit -m ‘注释’ 将暂存区的内容提交到本地仓库

         Git 提供了一个跳过使用暂存区域的方式,只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤

         git commit -am ‘注释’跟踪过的文件提交到本地仓库

         git commit –amend 修改上次提交(如果需要新加文件,将文件add到暂存区,如果修改文件,先修改,在使用)

11.git push:将本地仓库内容推送到远程仓库

         git push [远程主机名] [本地分支名]:[远程分支名]:即是将本地的分支推送到远程主机上分支

         git push origin master:如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建

         git push origin :refs/for/master :如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master

         git push origin:如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支

         git push:如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名

12.git merge:合并分支

         git merge [分支1]:将分支1的内容合并到当前分支 

         合并分支一半需要手动解决冲突,在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决状态(译注:实际上就是来一次快照保存到暂存区域。)

         git merge -- abort :取消本次合并

13.git fetch:拉取远程仓库到本地仓库

         此操作不会影响当前的分支,创建在origin上,例如origin/master

         git fetch:更新所有分支

         git fetch origin master:取回origin主机的master分支

14.git pull:拉取远程仓库到本地仓库并合并到本地分支(git fetch + git merge)

15.git branch:管理分支

         git branch:查看本地分支

         git branch -a:查看所有分支

         git branch  [分支名]:新建分支

         git branch -d  [分支名]:删除分支

         git branch --v:查看分支具体信息

         git branch --merged:查看哪些分支已被并入当前分支

         git branch --no-merged:查看尚未合并的工作

16.git checkout:检出分支或撤销文件

         git checkout  [分支名]:切换分支

         git checkout -b  [分支名]:新建分支并转换到新分支

         git checkout – [文件名]:本地仓库的某个文件将工作区内容还原。

         git checkout + 提交日志 + 文件名:将工作区内容还原到某次提交的某个文件的内容,提交日志可以是某一次的具体hash值,也可以是Head~数字 表示当前提交的前多少次

17.git reset:重制HEAD到指定状态

         git reset 或者 git reset -- mixed HEAD~ 将本地仓库的上一次提交保存到暂存区,不会修改工作区内容

         git reset -- hard HEAD~ 将本地仓库的上一次提交保存到暂存区和工作区(工作区内容丢失,尽量少用,不可逆)

         git reset -- soft HEAD~ 将head指针指向上一次提交,不会修改暂存区和工作区

18.git revert:撤销一些已经存在的提交

         git revert + 版本号 :撤销到上一次操作

         与git reset -- hard区别:git revert是一次新的提交,有版本号,而git reset -- hard将以后提交的版本号全删除。

19.git cherry-pick:把某次提交的内容合并到当前分支

         git cherry-pick + 版本号 :将这一次的修改提交到当前分支。

         如果使用git merge会将所有的修改全部提交。

20.git rebase:用于把一个分支的修改合并到当前分支 (把在一个分支里提交的改变移到另一个分支里重放一遍)

         注:一般我们使用变基的目的,是想要得到一个能在远程分支上干净应用的补丁 — 比如某些项目你不是维护者,但想帮点忙的话,最好用变基:先在自己的一个分支里进行开发,当准备向主项目提交补丁的时候,根据最新的 origin/master 进行一次变基操作然后再提交,这样维护者就不需要做任何整合工作(译注:实际上是把解决分支补丁同最新主干代码之间冲突的责任,化转为由提交补丁的人来解决。),只需根据你提供的仓库地址作一次快进合并,或者直接采纳你提交的补丁。

         合并结果中最后一次提交所指向的快照,无论是通过变基,还是三方合并,都会得到相同的快照内容,只不过提交历史不同罢了。变基是按照每行的修改次序重演一遍修改,而合并是把最终结果合在一起。