Git

来源:互联网 发布:什么样买卖数据 编辑:程序博客网 时间:2024/06/06 00:57

说明:git命令小结
1. 创建一个仓库

$ git init新一个空文件夹,在这个文件夹下打开git bash,或者在git bash中cd到新建的这个目录,执行git init命令。文件夹中会出现一个.git的目录,此时这个文件夹就成了一个本地git仓库。
$ git clone url从远程端克隆项目。url为项目地址。

2.编辑文件后提交到本地仓库,是提交到本地仓库。这里分两步:

//第一步:$ git add filefile为你要提交的文件名,此时只是当你修改的部分放到了暂存区,也就是说你告诉git我的这些修改是我要准备提交的。可以操作多次以添加多个文件到暂存区。也就是说你的文件要提交,首先必须要放到暂存区。然后才能提交到仓库。//第二步:$ git commit -m "注释信息"“注释信息表示你对你的修改要做的说明”,此时你就将你放在暂存区的修改持久化到本地仓库(你当前所在的分支)。此操作会将你暂存区的所有文件提交到仓库中。记住,git commit 前一定要先git add,如果你不git add,那么你的修改就会commit到本地仓库。

3.我要看看我的本地仓库的状态信息。如我的仓库有无文件要提交,没有提交的文件是处于什么状态(即有无放入暂存区)。

$ git status//当你只是在你的仓库中创建一个文件,然后操作git status显示如下On branch master //你当前所在的分支No commits yet //表示你当前的文件还没有提交过,仓库中还没有它Untracked files: //表示你的文件还没有放入暂存区,即没有进行git add操作  (use "git add <file>..." to include in what will be committed)        example.txt  //文件名nothing added to commit but untracked files present (use "git add" to track)
$ git add example.txt$ git status//当你进行了git add操作后再执行git statusOn branch master//你当前所在分支No commits yet//同上Changes to be committed://表示你的文件可以提交到本地仓库了  (use "git rm --cached <file>..." to unstage)//后面再说        new file:   example.txt //表示是一个新的文件
$ git commit -m "I commit a file to local repository"$ git status//当你将你的文件提交到了仓库之后再执行git statusOn branch master //你当前所在的分支nothing to commit, working tree clean //没有什么需要提交,工作区很干净。这说明你的修改已全部提交到了本地仓库了。此时还只是在你的本地仓库中,并没有提交到远程服务器上。

4.我想看看我作了哪些修改?

$ git diff 文件名//这个命令可以查看你对某个文件所做的修改记录。这是在git add之前操作的。

5.回退版本
在回退之前我们要先看一下提交的历史记录。

$ git log //该命令用于查看提交历史记录//命令反馈结果commit aeaf2961d9be1838213dacaa7300105c2fe0b60e (HEAD -> master)//版本号Author: xzz <*****@qq.com> //提交人Date:   Mon Dec 18 09:14:36 2017 +0800 //时间    1  //注释信息commit 133e91c8482a2d25a0b4316f7ae46450a13745a7Author: xzz <*****@qq.com>Date:   Mon Dec 18 09:13:35 2017 +0800    0commit d1a8efaec068b8e957e8d4eda0c2ebf61fd2e48fAuthor: xzz <*****@qq.com>Date:   Sat Dec 16 18:20:02 2017 +0800    I commit a file to local repository//如果你觉得以上输出信息太多,则可使用一些约束$ git log --pretty=oneline //此时只会显示版本号和注释信息aeaf2961d9be1838213dacaa7300105c2fe0b60e (HEAD -> master) 1133e91c8482a2d25a0b4316f7ae46450a13745a7 0d1a8efaec068b8e957e8d4eda0c2ebf61fd2e48f I commit a file to local repository

现在可以查看历史记录了,就可以执行版本回退了。

$ git reset --hard HEAD^//HEAD^表示回退到上一个版本,HEAD^^表示上上一个版本,如果要回退到上100个版本,则用^表示不现实了,此时用HEAD~100表示。那是不是我每次回退还得要数1234567呢?答案非也,你可以自由切换到任何一个版本,请看后面。//执行结果HEAD is now at 133e91c 0 //告诉你现在在哪个版本,133891c表示版本号的前7位数。//你再执行git log命令,发现回退之前的那个版本不见了,即回退后我要前进怎么办?$ git relog  //查看你的版本操作记录,即提交与回退操作记录//执行结果如下133e91c (HEAD -> master) HEAD@{0}: reset: moving to HEAD^aeaf296 HEAD@{1}: commit: 1133e91c (HEAD -> master) HEAD@{2}: commit: 0d1a8efa HEAD@{3}: commit (initial): I commit a file to local repository//前面的部分表示的是版本号的简写(即版本号的前几位数,这是一个16进制表示的),执行命令:$ git reset --hard 版本号//指定版本号,你想到哪里就到哪里。

6.撤销修改
撤销未保存到暂存区(未执行git add)的修改。

$ git checkout -- 文件名//注意-- 不要忘记了,否则就成了另外一个命令。//重点:这个命令只能撤销你在git add之前的修改,如果你将你的修改git add到暂存区了,如何解决呢?请往下看:$ git reset HEAD 文件名//是不是很有见过这个命令,它会将我们git add到暂存区的修改撤销放回到工作区(git add之前你的修改所在位置为工作区),即回退到你git add之前的状态。如果你的这些修改不想要了,那么就执行上一步的命令‘git checkout -- 文件名’,就将其从工作区中也给干掉了。那你说我已经给commit 了,那怎么办呢?请继续往下看:如果你没有推送到远程服务器上:那么也还有办法,我们前面的版本回退就,回退到上一个版本就OK了。git reset HEAD^

7.删除文件

$ rm 文件名//这也是一个修改,接着要操作git add ,git commit$ git rm 文件名 //这个相当于 rm 文件名 + git add 文件名 这两步操作。//如果你发现误删了,参考前面的撤销修改操作。

8.管理分支

//1.创建分支$ git branch dev //创建dev分支$ git checkout dev //切换到dev分支$ git checkout -b dev //相当于上面两条命令,创建并切换到dev分支$ git branch  //查看有哪些分支$ git branch -d dev //删除dev分支$ git branch -D dev //当dev没有合并前是无法删除的,此时可以强行删除一个没有合并过的分支$ git merge dev //将指定的dev分支合并到当前所在分支,这会将分支历史删除$ git merge --no-ff -m "注释信息" dev //合并dev到当前分支$ git log --graph --pretty=oneline //查看分支合并历史//2.Bug分支,当我们在修改Bug时,当前工作被中断了,但是当前工作又没有做完而无法提交,此时需要将当前工作“收起来”放到一边,bug修改完了再“拿出来”。$ git stash //然后你再git status,发现提示你的工作区nothing to commit.$ git stash list //查看的收起记录$ git stash apply  //将“收起来的”修改“还原”。$ git stash drop  //删除你的“收起记录”$ git stash pop  //相当于上面两步操作,还原收起并删除收起记录。

9.远程操作

$ git clone url //克隆远程仓库,此时远程仓库会被自动命名为 origin$ git clone -o 别名 url //克隆版本库的时候,给远程仓库一个别名$ git remote //查看所有的远程仓库信息$ git remote -v //查看所有的远程仓库的详细信息$ git remote show 主机名 //查看指定远程仓库的详细信息$ git remote add 远程仓库名 url  //将远程仓库与本地仓库相关联$ git remote rm 主机名  //删除远程仓库$ git remote rename 原仓库名 主仓库名 //给远程仓库改名$ git push origin master //将master分支推送到远程分支$ git fetch 远程仓库名 //将远程仓库上的所有更新取回到本地,它不会与你现有的代码合并。$ git fetch 远程仓库名 分支名 //将远程仓库上指定分支的更新取回到本地,它不会与你现有的代码合并$ git branch -r //查看远程分支$ git branch -a //查看远程仓库的所有分支$ git merge origin/master //将远程分支origin/master与当前分支合并$ git rebase origin/master //等同于上一条命令$ git pull 远程仓库名 远程分支名:本地分支名 //取回远程上某个分支的更新并与本地指定分支合并,如果本地分支为当前分支,则冒号及其之后的本地分支名可以省略。等同于git fetch 和 git merge组合。$ git branch --set -upstream master origin/next //手动建立跟踪关系$ git push //将本地更新推送到远程$ git push 远程仓库名 本地分支名:远程分支名 //注意与git pull中本地分支与远程分支的顺序是反的。$ git push 远程仓库名 本地分支名 //省略了远程分支名,此时将本地推送到远程与之存在跟踪关系的远程分支,如果远程分支不存在,则会被新建。$ git push 远程仓库名 :远程分支 //省略了本地分支名则表示删除指定的远程分支,即相当于推送了一个空的本地分支到远程上。$ git push -u origin master //将master分支推送到远程origin仓库,同时指定origin为默认远程仓库,后面使用git push时就可以不加参数使用了。
原创粉丝点击