1、使用git config命令进行配置(此配置为全局配置,这些是在提交commit时的签名):
$ git config --global user.name "填写github的用户名"
$ git config --global user.email "填写github的邮箱"
注意:git config 命令带 --global参数一经配置,在每次commit时都会自动调用,而且在你机器上的所有git仓库,都会使用到这个配置。改配置保存在 ~/.gitconfig 文件中。
可用 $git config -l 查看以上配置情况
2、克隆仓库
使用下面方式进行clone:
$ git clone https://github.com/shiyanlou/gitproject
克隆完成后,当前目录下会生成 gitproject文件
PS:git clone 与 git pull 的区别
git clone 命令,某一目录下面没有repository(仓库)时,通过 $git clone
git@github.com:whatever
/something
.git 方式将远程已存在的某一个仓库完整复制过来,在本地不必进行 $git init 初始化操作
git pull 命令,相当于执行了
git fetch
+ git merge
操作,是拉取远程分支更新到本地仓库,然后进行merge(合并)操作。何时会用到?当远程分支更新了内容,而本地仓库没有同步这些内容,则使用该命令,相当于获取新版本。 git pull = git fetch + git merge3、初始化仓库命令(将目录切换到具体目录下再执行)
$ git init
作用
主要用来初始化一个空的git
本地仓库。执行完上面的命令,当前目录下会自动生成.git
隐藏文件夹,该隐藏文件夹就是git
版本库
4、git的基本流程如下:
1)创建或修改文件
2)使用git add命令添加新创建或修改的文件到本地的缓存区(Index)
3)使用git commit命令提交到本地代码库
4)(可选,有的时候并没有可以同步的远端代码库)使用git push命令将本地代码库同步到远端代码库
5、使用git status命令查看当前git仓库的状态:git diff 命令再加上 --cached 参数,看看缓存区中哪些文件被修改了
(要退出时使用q)。执行了$git add 添加文件到缓存区后,若想撤回这些文件,用下面命令
$git reset HEAD 或者 $git reset HEAD foo.text(文件)或者src/test/(目录)
6、当所有新建,修改的文件都被添加到了缓存区,就要使用git commit提交到本地仓库(-m添加本次修改的注释):
$ git commit -m "add 3 files"
用下面的命令将所有没有加到缓存区的修改也一起提交,但-a命令不会添加新建的文件。
$ git commit -a -m "add 3 files"
7、将本地仓库与远程仓库关联,使用如下命令(需要修改下面的远程仓库地址为自己的仓库地址):
git remote add origin https://github.com/something.git
这个时候如果本地的仓库连接到了远程Git服务器,可以使用下面的命令将本地仓库同步到远端服务器:
# 需要输入仓库对应的用户名和密码 $ git push origin master
$ git push -u origin +master 强行更新(提示:更新被拒绝,因为远程版本库包含您本地尚不存在的提交。。。)
8、Git仓库创建一个新的叫 experimental的分支:
$ git branch experimental
运行git branch命令可以查看当前的分支列表,以及目前的开发环境处在哪个分支上:
$ git branch experimental * master
输入git checkout 分支名可以切换到其他分支:
$ git checkout experimental Switched to branch 'experimental'
9、git merge命令来合并experimental到主线分支master:
# 切换到master分支 $ git checkout master # 将experimental分支合并到master $ git merge -m 'merge experimental branch' experimental
10、不再需要experimental时,可以使用下面的命令删除:
$ git branch -d experimental
git branch -d只能删除那些已经被当前分支的合并的分支. 如果你要强制删除某个分支的话就用git branch –D
11、如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态(撤销前一个合并):
$ git reset --hard HEAD^ # 查看file3的内容,已经恢复到合并前的master上的文件内容
12、查看日志,git log命令可以显示所有的提交(commit):
$ git log
格式化日志
你可以按你的要求来格式化日志输出。--pretty参数可以使用若干表现格式,如--oneline
$ git log --pretty=oneline
或者用short、medium,full,fuller,email 或raw,format参数定义格式。
$ git log --pretty=format:'%h : %s' --topo-order --graph
统计修改信息(在log命令后面添加某些参数可达到统计作用
--stat 显示被修改的那些文件
--dirstat 显示那些包含被修改文件的目录
--shortstat 显示项目中有多少文件被修改
--graph 显示各提交之间的关系(提交路线)
13,相关命令的含义
已修改,未暂存
git diff
还没有做git add .之前,我们如何检查有哪些修改,
已暂存,未提交
git diff这个命令只检查我们的工作区和暂存区之间的差异,如果我们想看到暂存区和本地仓库之间的差异,就需要加一个参数
$git diff --cached
diff 命令还能比较两次提交之间的差异
$git diff 77d231f(这是某次提交的散列值) HEAD
或者比较当前提交于上一次提交之间的差异,使用 ^!
$git diff 77d231f^!
已提交,未推送
git diff master origin/master
把修改从暂存区提交到本地仓库,再看一下差异。先执行git commit,然后再执行git diff --cached,没有差异,执行git diff master origin/master,可以看到差异:
.
14. .gitignore文件的作用,放在该文件夹下的文件,是告诉Git哪些文件不需要添加到版本管理中,可以在该文件中指定这些文件路径和目录,并且可以使用“*”和
"&"等通配符
15. $git stash 命令的作用
通俗的将,当我们正在进行某些事情的处理,比如修改bug,或者正在开发,突然来个任务说要紧急去干其它事情,比如修复线上的BUG,可是此时的工作需要保存
下来以便解决完其它事情后,再回来处理还能完整打开并继续,此时stash命令就起到这样的作用。
stash命令将工作区和暂存区的修改保存在一个被称为存储栈(stash stack)的缓存区中。与stash相关命令
$git stash
将本地的修改保存起来,并且将当前代码切换到HEAD
提交上$git stash list 查看当前存储的修改列表
$git stash pop 恢复到存储代码之前的工作状态