Git使用

Git使用

  • git --version

查看Git的版本

  • 基本工作流程
git仓库 暂存区 工作目录
用于存放提交的记录 临时存放被修改的文件 被git管理的项目目录
  • 使用前配置

全局配置,一次安装只需要配置一次,信息保存至.gitconfig文件

git config --global user.name "用户名"
git config --global user.email "用户邮箱"
  • 常用提交步骤
git init #初始化代码仓库

git status #查看文件状态

git add 文件列表 #追踪文件
git add * #添加所有文件到暂存区
git add . #同上
git add -u . #已追踪文件中的修改和删除文件添加到暂存区,不包括新增的文件
git add -A . #已追踪的文件的修改跟删除,和新增的未追踪的文件都添加到暂存区
git add *.html #添加某个类型的文件到暂存区,比如所有的html文件
git add /index #添加整个文件夹到暂存区,比如index文件夹

git commit -m "提交信息" #提交暂存区到本地仓库
git commit [file1] [file2] ... -m [messege] #提交暂存区的制定文件到仓库

git log #显示所有提交记录
git reflog #查看所有版本信息

git reset --hard 版本id #回退版本

git diff #表示未使用add命令时的修改

git rm <file> #将文件从暂存区和工作区中删除
git rm --cached <file> #将文件从暂存区删除

git remote -v #显示所有远程仓库
git remote add [shortname] [url] 添加远程版本库
eg:
$ git remote add origin git@github.com:someting.git
$ git push -u origin master 
git remote rm name #删除远程库
git remote rename oldname newname

git pull <远程主机名> <远程分支名>:<本地分支名>
git pull origin master:brantest #将远程主机origin的master分支拉取下来,与本地brantest分支合并
git pull orgin master #远程分支与当前分支合并

git push <远程主机名> <本地分支名>:<远程分支名>
git push <远程主机名> <本地分支名> #本地分支与远程分支名相同
git push origin master #将本地master分支推送到远程orgin主机master分支,没有则创建一个远程master分支
git push --force origin master #远程库版本与本地版本有差异,可以强制推送
git push origin --delete master #删除origin主机的master分支
  • git clone
git clone <repo>
eg:git clone git://github.com/schacon/grit.git
git clone <repo> <dir> #dir为本地目录
git clone -b branchname <repo> #克隆远程仓库的指定分支
  • git分支管理
git branch #列出所有本地分支
git branch (branchname) #创建分支
git checkout (branchname) #切换分支
git merge (branchname) #将branchname分支与当前分支合并
git branch -d (branchname) #删除branchname分支
  • git reset

git reset 命令用于回退版本,可以指定退回某一次提交的版本。

git reset 命令语法格式如下:

git reset [--soft | --mixed | --hard] [HEAD]

--mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。

git reset  [HEAD] 

实例:

$ git reset HEAD^            # 回退所有内容到上一个版本  
$ git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本  
$ git  reset  052e           # 回退到指定版本

--soft 参数用于回退到某个版本:

git reset --soft HEAD

实例:

$ git reset --soft HEAD~3   # 回退上上上一个版本 

--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:

git reset --hard HEAD

实例:

$ git reset --hard HEAD~3  # 回退上上上一个版本  
$ git reset –hard bae128  # 回退到某个版本回退点之前的所有信息。 
$ git reset --hard origin/master    # 将本地的状态回退到和远程的一样 

注意:谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。

HEAD 说明:

  • HEAD 表示当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • HEAD^^^ 上上上一个版本
  • 以此类推...

可以使用 ~数字表示

  • HEAD~0 表示当前版本

  • HEAD~1 上一个版本

  • HEAD^2 上上一个版本

  • HEAD^3 上上上一个版本

  • 以此类推...

git reset HEAD

git reset HEAD 命令用于取消已缓存的内容。

我们先改动文件 README 文件,内容如下:

# Runoob Git 测试
# 菜鸟教程 

hello.php 文件修改为:

<?php
echo '菜鸟教程:www.runoob.com';
echo '菜鸟教程:www.runoob.com';
echo '菜鸟教程:www.runoob.com';
?>

现在两个文件修改后,都提交到了缓存区,我们现在要取消其中一个的缓存,操作如下:

$ git status -s
    M README
    M hello.php
$ git add .
$ git status -s
M  README
M  hello.php
$ git reset HEAD hello.php 
Unstaged changes after reset:
M    hello.php
$ git status -s
M  README
    M hello.php

现在你执行 git commit,只会将 README 文件的改动提交,而 hello.php 是没有的。

$ git commit -m '修改'
[master f50cfda] 修改
    1 file changed, 1 insertion(+)
$ git status -s
    M hello.php

可以看到 hello.php 文件的修改并未提交。

这时我们可以使用以下命令将 hello.php 的修改提交:

$ git commit -am '修改 hello.php 文件'
[master 760f74d] 修改 hello.php 文件
    1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working directory clean

简而言之,执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存。

评论区 0