美文网首页
Git 常用命令及使用

Git 常用命令及使用

作者: PikachuKing | 来源:发表于2019-04-25 23:02 被阅读0次
配置用户信息
$ git config --global user.name "PikachuKing"
$ git config --global user.email PikachuKing@qq.com

如果使用了--global参数表示你这台机器上所有的Git仓库都会使用这个配置,需要对某个仓库指定不同的用户名和邮箱时只需要在那个项目目录下运行没有 --global 选项的命令来配置。
其他配置项可运行git config --help查看

创建版本库
$ git init
//创建完成并告诉你当前仓库为空,并在当前目录生成.git目录
Initialized empty Git repository in C:/Users/Administrator/Desktop/laravelTest/.git/
将文件添加到版本库

第一步:是用git add把文件添加到暂存区;
第二步:是用git commit把暂存区的所有内容提交到当前分支。

//添加指定文件到暂存区
$ git add <file>
//添加已修改的(新增或修改)内容至暂存区(不含删除的文件)
$ git add . 
//添加本地所有修改的内容至暂存区(包含删除的文件)
$ git add -A
//显示已添加至暂存区未提交的以及已修改未暂存的 
$ git status
//查看还未添加至暂存区所有文件的修改具体内容
$ git diff 
//查看添加至暂存区所有文件的修改具体内容
$ git diff --stage  
//一次性把暂存区的所有修改提交到当前分支
$ git commit -m <message>
版本操作
//提交日志
$ git log
commit a16d65e6acd703aed8c8dab3be0d7dab789f5b65 (HEAD -> master)  //commit id(版本号)
Author: PikachuKing <pikachuking01@gmail.com> //提交人信息
Date:   Wed Apr 24 23:12:12 2019 +0800  //提交时间

    修改User   //提交备注信息

commit ac8e2788d44205791f166e3ca7d61a4595fd25f7
Author: PikachuKing <pikachuking01@gmail.com>
Date:   Wed Apr 24 23:10:29 2019 +0800

    初始化项目

//将版本回退到初始化
$ git reset --hard ac8e2788d44205791f166e3ca7d61a4595fd25f7
HEAD is now at ac8e278 初始化项目

//再次查看log
$ git log
commit ac8e2788d44205791f166e3ca7d61a4595fd25f7 (HEAD -> master)
Author: PikachuKing <pikachuking01@gmail.com>
Date:   Wed Apr 24 23:10:29 2019 +0800

    初始化项目

//上一次的修改已经不见了,要是想恢复
//git reflog 会记录每一次的操作命令
$ git reflog
ac8e278 (HEAD -> master) HEAD@{0}: reset: moving to ac8e2788d44205791f166e3ca7d61a4595fd25f7
a16d65e HEAD@{1}: commit: 修改User
ac8e278 (HEAD -> master) HEAD@{2}: commit (initial): 初始化项目

//这里我们可以得到 修改User 这个操作的 commit_id的前几位
//这里的commit_id 写了前几位,Git会自己取寻找
$ git reset --hard a16d65e
HEAD is now at a16d65e 修改User

//再次查看log
commit a16d65e6acd703aed8c8dab3be0d7dab789f5b65 (HEAD -> master)
Author: PikachuKing <pikachuking01@gmail.com>
Date:   Wed Apr 24 23:12:12 2019 +0800

    修改User

commit ac8e2788d44205791f166e3ca7d61a4595fd25f7
Author: PikachuKing <pikachuking01@gmail.com>
Date:   Wed Apr 24 23:10:29 2019 +0800

    初始化项目
// HEAD指向的版本就是当前版本
撤销修改
//如果文件修改了未提交到暂存区,则回到和版本库的状态
//已经添加到暂存区后,又作了修改,则回到暂存区的状态
$ git checkout -- <file>
//把暂存区的修改回退到工作区
$ git reset HEAD <file>
创建分支
//查看分支
$ git branch
//创建分支
$ git branch <name>
//切换分支
$ git checkout <name>
//创建并切换到新创建分支
$ git checkout -b <name>
//合并分支到当前分支
$ git merge <name>
//删除分支
$ git branch -d <name>
//删除未合并过的分支(强行删除,将丢失掉修改)
$ git branch -D <name>
//查看分支合并图
$ git log --graph
冲突解决

当我们在两个分支修改了同一行时,无法使用merge快速合并,需要手动解决冲突后再提交

$ git merge newBranch
Auto-merging app/User.php
CONFLICT (content): Merge conflict in app/User.php
Automatic merge failed; fix conflicts and then commit the result.

//可以使用ststus查看冲突文件
$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)
Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   app/User.php
no changes added to commit (use "git add" and/or "git commit -a")

//我们查看 app/User.php文件对冲突进行处理(删除不需要的)
<<<<<<< HEAD
        'name', 'email', 'password','user','sdsdsds'
=======
        'name', 'email', 'password','user','nihao','ssss'
>>>>>>> newBranch

//修改后再次提交
$ git add .
$ git commit -m'修改'
[master 238a499] 修改

//查看分支合并图
$ git log --graph
储藏

git stash用于将当前工作区的修改暂存起来,就像堆栈一样,可以随时将某一次缓存的修改再重新应用到当前工作区。当我们临时需要修改个BUG又不想把当前工作区提交时使用stash会非常方便。

$ git stash
Saved working directory and index state WIP on master: 238a499 修改

//再次使用status查看会发现工作区是干净的
$ git status
On branch master
nothing to commit, working tree clean

//当我们想取回储藏的内容时,查看储藏列表
$  git stash list
stash@{0}: WIP on master: 238a499 修改

//恢复 使用apply 恢复是不会删除stash 的需要git stash drop来删除
$ git stash apply stash@{0}
$ git stash drop stash@{0}
//也可以使用pop,恢复的同时删除stach
git stash pop stash@{0}
标签

常用来标记发布结点版本号(如V 1.0)

//切换到需要打标签的分支上新建一个标签
$ git tag <tagname>
//也可以通过commit_id给历史分支打标签
$ git tag <tagname> <commit_id>
//创建带有说明的标签
$ git tag -a <tagname> -m "说明内容" <commit_id>
//查看所有标签
$ git tag
//查看标签信息
$ git show <tagname>
//删除某个标签
$ git tag -d <tagname>
//推送某个标签到远程
$ git push origin <tagname>
//推送全部未推送过的本地标签
$ git push origin --tags
//删除一个本地标签
$ git tag -d <tagname>
//删除一个远程标签
git push origin :refs/tags/<tagname>
远程仓库
//创建SSH Key 会在.ssh目录生成id_rsa和id_rsa.pub两个文件
$ ssh-keygen -t rsa -C "pikachuking@qq.com"
//在GitHub仓库添加id_rsa.pub内容
//关联远程仓库
$ git remote add origin git@github.com:piakachuking/test.git
//使用push推送到远程仓库
$ git push <远程主机名> <本地分支名>  <远程分支名>
//如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
$ git push origin master
//如果省略本地分支名等同于 git push origin --delete master ,会删除指定远程分支
$ git push origin :refs/for/master 
//如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
$ git push origin
//如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push
$ git push -u origin master 
//克隆一个本地库   
$ git clone git@github.com:*****
//取回远程主机某个分支的更新,再与本地的指定分支合并
$ git pull <远程主机名> <远程分支名>:<本地分支名>
//将远程主机origin的master分支拉取过来,与本地的test分支合并
$ git pull origin master:test
//将远程仓库的master分支下载到本地当前test中,不会合并
$ git fetch origin master:test
//查看区别后在选择是否合并
$ git diff test
//合并
$ git merge test

相关文章

网友评论

      本文标题:Git 常用命令及使用

      本文链接:https://www.haomeiwen.com/subject/lvangqtx.html