Git常用命令

来源:互联网 发布:电脑网络链接别人电脑 编辑:程序博客网 时间:2024/05/18 02:24

工作区:电脑里能看到的目录,你修改文件的地方

版本库:工作区有一个隐藏目录.git,是Git的版本库,版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

这里写图片描述

1、配置名字、Email地址和SSH Key

$ git config --global user.name "Your Name"$ git config --global user.email "Your Email"// --global表示你这台机器上所有的Git仓库都会使用这个配置$ ssh-keygen -t rsa -C "youremail@xx.com"//在GitHub中添加SSH Key-->粘贴id_rsa.pub文件的内容

2、初始化本地git仓库

$ git init                 //把这个目录变成Git可以管理的仓库,如果不是空目录,你需要把该目录下的所有文件添加到仓库

3、查看工作区当前版本状态$ git status 1.txt

4、添加文件到仓库

$ git add 1.txt //可以一次添加多个文件,用空格隔开$ git add .     //将当前目录下的文件全部添加到暂存区$ git commit -m "1.txt创建"

5、查看文件变更:

git diff 1.txt 暂存区的文件commit到分支上后暂存区仍然留有文件,diff就是比较工作区和暂存区的不同

git diff --cached 比较的是版本库和暂存区

git diff HEAD -- 1.txt比较工作区和版本库的区别

6、版本回退

版本回退只会回退到commit时的状态,commit后的修改会丢失。

$ git log 查看提交日志

在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写成HEAD~100,回退到上一个版本1.1,就可以使用git reset命令:$ git reset --hard HEAD^

回到当前版本git reset --hard HEAD,此时,工作区和暂存区的修改将被删除,回到最近的一次提交,但未追踪的文件和目录修改不会删除,将未追踪的文件目录add到暂存区就会删除。–hard表示该版本之后追踪的修改都会被删除。

重置到某个版本,并且不丢失该版本之后commit的修改git reset --soft commitid,之后版本的修改会回退到暂存区,工作区的修改也不会丢失,可以继续add。

如果你已经关掉了当前窗口,commit id找不到了,还可以用$ git reflog来查看你的每一次命令

这里写图片描述

git reflog 可以查看所有分支的所有操作记录(commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录(1.3记录已被删除)

7、撤销修改

放弃在工作区的修改:$ git checkout -- 1.txt,这里有两种情况:

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

一种是1.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。此时暂存区仍有文件,如果想把暂存区的文件清除,只在工作区保留修改,用$ git reset HEAD 1.txt,然后再用上一种方式清除工作区修改。

总之,就是让这个文件回到最近一次git commit或git add时的状态。如果已经commit就回退版本到上一个版本。

8、删除文件

$ rm 2.txt命令删除,这时工作区中就没2.txt文件了,想恢复就用$ git checkout -- 2.txt,如果确实要从版本库中删除,就$ git rm 2.txt,commit;git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

9、分支管理

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout -b name

合并某分支到当前分支:git merge name

删除分支:git branch -d name

10、添加GitHub远程仓库

先在github中创建一个仓库Demo2,在本地(.git的上级目录)执行下列命令

$ git remote add origin git@github.com:YatesChiang/Demo2.git
$ git push -u origin master

将本地修改推送到GitHub

$ git push origin master

11、配置命令别名

git config --global alias.st status   //st表示statusgit config --global alias.unstage 'reset HEAD'

12、删除Untracked files

untracked files指新建的文件,还未add到暂存区

git clean -f   //删除当前目录下未追踪的文件,如果当前目录下有两个子目录aa和bb,aa已经被追踪,bb未被追踪,这两个目录下都新建了文件,那么aa中的文件会被删除,bb中的不会git clean -fd  //删除当前目录下未追踪的目录和文件,aa中未被追踪的目录和文件也会被删除git clean -n   //显示将要删除的未追踪文件的名字git clean -nf  //同上git clean -nfd //显示将要删除的未追踪目录和文件的名字

13、git pull –rebase

当本地commit一个提交和远端服务器中的代码有冲突(别人也改了相同的文件)时可以在pull 中加 –rebase。加上 rebase 的意思是:

  1. 把本地 repo. 从上次 pull 之后的变更暂存起來
  2. 恢复到上次 pull 时的状态
  3. 合并远端的变更到本地
  4. 最后再合并刚刚暂存下來的本地变更

这里写图片描述

转自:http://blog.csdn.net/huangyabin001/article/details/30100287

0 0
原创粉丝点击