1、git init
:初始化所在目录为git仓库(在这个目录里,可以理解为一个虚拟的空间,.git文件隐藏存在,);假如所在目录为gitOne
2、git add fileName
:(如果)gitOne文件夹里存在fileName这个文件,就把它添加到这个仓库的缓存区(index);
$ git add . # 将所有修改添加到暂存区
$ git add * # Ant风格添加修改
$ git add *Controller # 将以Controller结尾的文件的所有修改添加到暂存区
$ git add Hello* # 将所有以Hello开头的文件的修改添加到暂存区 例如:HelloWorld.txt,Hello.java,HelloGit.txt ...
$ git add Hello? # 将以Hello开头后面只有一位的文件的修改提交到暂存区 例如:Hello1.txt,HelloA.java 如果是HelloGit.txt或者Hello.java是不会被添加的
3、git commit -m "提交说明信息(比如提交了什么文件和版本)"
:将所有add 到缓存区(index)的修改,commit
(提交)到本地的仓库主干。(可以这么理解,如果只是单纯的复制一个test.txt文件到gitOne文件夹里,这个文件和它所在的目录的git仓库并没有产生联系,通过add
和commit
来将你把它加入到这个文件夹的操作记录下来,并在git仓库里记录这次添加记录,使test.txt和gitOne在git仓库里产生联系,其他人使用git工具来拉你的代码的时候,就知道需要checkout那些文件,也只会checkout
有关联的文件,在git虚拟仓库里存在关联信息的文件)
4、git log
:查看历史提交信息
5、git status
:查看当前的缓存区(index)的状态,有没有add
了以后没commit
的文件,或者add
后做了修改没重新add
的文件。
6、git reset --hard HEAD^
:回退到上一个commit
的版本,git reset --hard 12345
:(12345是commit
的ID,可以使用git reflog
来查看历史的执行有效命令的信息,有每次commit
的id信息)
7、git checkout -- fileName
:当你修改错了某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- fileName
;当你已经add
了修改文件,将修改信息添加到了缓存区(index),就需要git reset HEAD fileName
来回退到add
之前(文件还是已修改)然后git checkout -- fileName
来丢弃修改,如果是已经commit
的,只能使用上一条的版本回退命令来回退了(前提是没有push
到远程仓库);
8、关联远程仓库:要关联一个远程库,将本地仓库推送到远程仓库,使用命令git remote add origin git@server-name:path/repo-name.git
;关联后,使用命令git push -u origin master
第一次推送 master 分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
9、clone仓库到本地:如果是我们新加入一个开发团队或对开源的一些项目做出开发支持,需要使用git clone address(远程仓库地址)
来从远程仓库(团队已创建好的)clone
一个到本地,默认目录名为远程仓库名;git clone address(远程仓库地址) fileName(本地文件夹名字)
:创建本地目录fileName
,并克隆远程仓库到里边;
10、git push
与git pull
是一对推送/拉取分支的git
命令。
git push
使用本地的对应分支来更新对应的远程分支:
$ git push <远程主机名> <本地分支名>:<远程分支名>
git pull
获取并合并其他的厂库,或者本地的其他分支:
$ git pull <远程主机> <远程分支>:<本地分支>
11、创建并指向这个分支:$ git checkout -b dev
创建dev
分支,并checkout
指向这个分支,仓库当前有效HEAD
会指向这个分支(即执行git命令时所操作的对象),等于执行了两条命令:
$ git branch dev ***创建分支'dev'***
$ git checkout dev ***'checkout'指向'dev'分支***
$ git branch
查看当前仓库所有分支;git branch -a
查看远程和本地所有分支
* dev ***当前仓库`HEAD`所指向的分支前会有'*'字符***
master ***clone下来,一般默认分支为'master'***
12、分支的合并:$ git checkout branchName
可以切换回branchName
分支;git merge branchName
命令用于合并branchName
到当前分支(当前仓库所操作的分支),如:当前分支为master
,将dev
分支 合并 到master
(当前分支)中
$ git checkout master
$ git merge dev
合并后,可以使用$ git branch -d dev
删除本地dev分支;
13、查看远程库信息,使用git remote -v
;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
;
从远程抓取分支,使用git pull
,如果有冲突,要先处理冲突。
14、git pull
失败的时候:
提示Please, commit your changes or stash them before you can merge.
错误,是因为本地有未提交的修改,本地内容和上一次commit-push内容不一致,解决办法有两种:
1).使用stash将未提交的修改放到暂存区,等pull更新后,再拿出来:
git stash
git pull
git stash pop
接下来git diff
一下此文件看看自动合并的情况,并作出相应修改。
git stash
: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop
: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop
会从最近的一个stash中读取内容并恢复。
git stash list
: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear
: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
2).放弃此次本地的不同修改,将工作区恢复到之前某次commit时的版本号(可参考上边第六条说明,以下命令为直接回退到上次提交的版本,也可以指定到某一个版本):
git reset --hard
git pull
网友评论