git基本操作命令

Git 基本操作

Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。

Git 常用的是以下 6 个命令:

git clonegit pushgit addgit commitgit checkoutgit pull

在这里插入图片描述

warksapce: 工作区

staging area:暂存区/缓存区

local repository:版本库,或本地仓库

remote repository:远程仓库

1. 创建仓库命令

git init 初始化仓库

git init命令用于在目录中创建新的git仓库,所有有关你的此项目的快照数据都存放在这里。

如:

例如我们在当前目录下创建一个名为 runoob 的项目:

-- mkdir product

-- cd product/

-- git init

– Initialized empty Git repository in /Users/tianqixin/www/runoob/.git**/**
# 初始化空 Git 仓库完毕。

现在你可以看到在你的项目中生成了 .git 这个子目录,这就是你的 Git 仓库了,所有有关你的此项目的快照数据都存放在这里。

.git 默认是隐藏的,可以用 ls -a 命令查看:

git clone 拷贝一个git仓库到本地,让自己能够查看该项目,或者进行修改。

git clone [url]

git会按照提供的url所指的项目的名称创建你的本地项目(通常是url最后一个/之后的项目名称)

git clone [url] anthorName   按指定名称创建本地项目

2. 提交与修改

git add 将文件添加到暂存区

git add [file1] [file2] ... 		添加一个或多个文件到缓存区

git add [dir]    					   添加指定目录到暂存区,包括子目录

git add .     							添加当前目录下所有改动的文件到暂存区
git status -s  

?? file1

?? file2

??表示该文件未添加到暂存区
执行完git add file1 file2

再执行

git status -s

A  file1

A  file2

A表示这两个文件已添加到暂存区
再次修改file

git status -s

AM file1

A file2

AM的状态是指该文件添加到缓存区后又有改动

git status 查看上次提交之后是否对文件再次修改,查看状态

git status -s  普遍使用-s参数来获得简短的输出结果

git diff 比较文件的不同 , 即比较文件在暂存区和工作区的差异

显示已写入暂存区的和已经被修改但尚未写入暂存区文件的区别

git diff 					尚未缓存的改动

git diff --cached	 查看已缓存的改动

git diff HEAD		  查看已缓存的与未缓存的所有改动

git diff --stat			显示摘要而非整个diff

显示暂存区和工作区的差异: git diff [file]

显示缓存区和上一次提交(commit)的差异    git diff --cache [file]    或  git diff --staged [file]

显示两次提交之间的差异	git diff [first-branch] ... [second-branch]

git commit命令 将暂存区的内容添加到本地仓库中

git commit

git commit -m '备注'

git commit [file1] [file2] ...  -m [message]  将暂存区的指定文件提交到仓库区

git commit -a 	设置修改后的文件不需要执行git add命令,直接来提交

git commit -am [message]

git config 设置提交代码时的用户信息:

git config --global user.name 'lmz'

git config --global user.email test@xxx.com

如果去掉-- global参数,则只对当前仓库有效

git reset 回退版本,可以指定回退某一次提交的版本

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

–mixed为默认,可以不带此参数。用于充值暂存区的文件与上一次的提交(commit)保持一致

如:git reset [HEAD]

– git reset HAED 回退所有内容到上一个版本

– git reset HEAD file1 回退file1文件的版本到上一个版本

– 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 rm 删除工作区文件夹

3. 提交日志

git log 查看历史提交记录

  1. 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看。

    git log
    
  2. 可以用 --oneline 选项来查看历史记录的简洁的版本。

    git log --oneline
    
  3. 我们还可以用 --graph 选项,查看历史中什么时候出现了分支、合并。以下为相同的命令,开启了拓扑图选项.

  4. 可以用 –reverse 参数来逆向显示所有日志。

  5. 查找指定用户的提交日志可以使用命令:git log --author

     git log --author --reverse --online -5
    

git blame 以列表形式查看指定文件的历史修改记录

查看指定文件的修改记录使用 git blame 命令

git blame <file>      git lame file1

4. 远程操作

git remote 增删改查远程仓库

git remote -v 显示所有远程仓库
git remote show [remote]   显示某个远程仓库的信息

​	如:git remote show https://github.com/tianqixin/runoob-git-tes
git remote add [shortname] [url] 添加远程仓库

shortname为本地的版本库

​ 如:提交到 Github

​ git remote add origin git@github.com:tianqixin/runoob-git-test.git

git  remote rm name    删除远程仓库
git remote rename old_name new_name   修改仓库

git fetch 从远程获取代码库

该命令执行完后需要执行 git merge 远程分支到你所在的分支。

git merge 从远端仓库体去数据并尝试合并到当前分支

该命令就是在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支。

git fetch [alias]
git merge [alias]/[branch]

然后我们在本地更新修改。

比如远端修改了某一文件,然后本地进行git fetch

$ git fetch origin
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:tianqixin/runoob-git-test
   0205aab..febd8ed  master     -> origin/master

以上信息"0205aab…febd8ed master -> origin/master" 说明 master 分支已被更新,我们可以使用以下命令将更新同步到本地:

$ git merge origin/master
Updating 0205aab..febd8ed
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

git pull命令

从远程获取代码并合并本地的版本。

git pull 其实就是 git fetchgit merge FETCH_HEAD 的简写。 命令格式如下:

git pull <远程主机名> <远程分支名>:<本地分支名>

实例

更新操作:

$ git pull
$ git pull origin

将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。

git pull origin master:brantest

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

git pull origin master

上面命令表示,取回 origin/master 分支,再与本地的 brantest 分支合并。

上面的 pull 操作用 fetch 表示为:

以我的 https://github.com/tianqixin/runoob-git-test 为例,远程载入合并本地分支。

$ git remote -v  # 查看信息
origin    https://github.com/tianqixin/runoob-git-test (fetch)
origin    https://github.com/tianqixin/runoob-git-test (push)

$ git pull origin master
From https://github.com/tianqixin/runoob-git-test
 * branch            master     -> FETCH_HEAD
Already up to date.

上面命令表示,取回 origin/master 分支,再与本地的 master 分支合并。

git push 将本地的分支版本上传到远程并合并

命令格式如下:

git push <远程主机名> <本地分支名>:<远程分支名>

如果本地分支名与远程分支名相同,则可以省略冒号:

git push <远程主机名> <本地分支名>

实例

以下命令将本地的 master 分支推送到 origin 主机的 master 分支。

$ git push origin master

相等于:

$ git push origin master:master

如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数:

git push --force origin master

删除主机的分支可以使用 --delete 参数,以下命令表示删除 origin 主机的 master 分支:

git push origin --delete master

以我的 https://github.com/tianqixin/runoob-git-test 为例,本地添加文件:

$ touch runoob-test.txt      # 添加文件
$ git add runoob-test.txt 
$ git commit -m "添加到远程"
master 69e702d] 添加到远程
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 runoob-test.txt

$ git push origin master    # 推送到 Github

将本地的 master 分支推送到 origin 主机的 master 分支。

重新回到我们的 Github 仓库,可以看到文件已经提交上来了:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值