Git 基本命令

文章目录

1. 工作流程

image.png
git 的基本操作过程:

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库

2. 查看 git 版本

git --version

3. 配置 git config

3.1 显示当前配置 git config --list

git config --list

3.2 设置用户信息

git config --global user.name "用户名称"
git config --global user.email "用户邮箱"

如果去掉 –global 参数只对当前仓库有效。当前的配置只是配置本地的用户信息,并不会影响远程仓库,所以可以随便写,知识作为本地仓库的一个用户信息标识。

4. 创建仓库

4.1 初始化仓库 git init

git init

4.2 拷贝远程仓库(下载项目) git clone

从现有Git仓库拷贝项目:

git clone <repo> <directory>

repo:Git 仓库地址
directory:本地目录
示例:

git clone git://github.com/schacon/grit.git

执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。
如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

git clone git://github.com/schacon/grit.git mygrit

5. 提交与修改

5.1 git add 添加文件到暂存区

将工作区的文件添加到暂存区:

git add . // 直接把全部文件添加到暂存区

git add *.c // 把.c为结尾的文件添加到暂存区

git add README // 把README文件添加到暂存区

git add *.c README // 添加多个文件

5.2 git status 查看仓库当前的状态,显示有变更的文件

查看仓库当前的状态,显示有变更的文件:

git status // new file 就表示新添加的文件

git status -s // -s 用来获得简短的输出结果 AM表示有改动,A表示无改动

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

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

git diff // 尚未缓存的改动

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

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

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

命令后面可以添加file。

5.4 git commit 提交暂存区到本地仓库

暂存区添加到版本库:

git commit -m '提交说明' // 提交暂存区所有的文件

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

git commit -am [message] // -a 参数设置修改文件后不需要执行 git add 命令,直接来提交

-m的作用就是填写提交信息,如果没有-m,Git 会尝试为你打开一个编辑器以填写提交信息。
注: 在 Linux 系统中,commit 信息使用单引号 ',Windows 系统,commit 信息使用双引号 "。
所以在 git bash 中 git commit -m ‘提交说明’ 这样是可以的,在 Windows 命令行中就要使用双引号 git commit -m “提交说明”。

5.5 git reset 回退版本

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

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

5.5.1 --mixed

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

git reset HEAD^            // 回退所有内容到上一个版本  
  
git reset HEAD^ hello.php  // 回退 hello.php 文件的版本到上一个版本  

git  reset  052e           // 回退到指定版本

5.5.2 --soft

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

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

5.5.3 --hard

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

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

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

5.5.4 HEAD 说明

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

可以使用 ~数字表示

  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD^2 上上一个版本
  • HEAD^3 上上上一个版本
  • 以此类推…

5.6 git rm 将文件从暂存区和工作区中删除

git rm 命令用于删除文件,如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示,将文件从暂存区和工作区中删除:

git rm <file>

git rm runoob.txt // 从暂存区和工作区中删除 runoob.txt 文件

git rm -f runoob.txt // 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

git rm --cached <file> // 把文件从暂存区域移除,但仍然希望保留在当前工作目录

git rm --cached runoob.txt // 从暂存区中删除 runoob.txt 文件

-f:强制执行(force);
–cached:只操作暂存区。

5.7 git mv 移动或重命名工作区文件

git mv 命令用于移动或重命名一个文件、目录或软连接:

git mv [file] [newfile]

git mv -f [file] [newfile] // 如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数

f:强制执行(force)。

6. 提交日志

6.1 git log 查看历史提交记录

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

git log

git log --oneline // 用 --oneline 选项来查看历史记录的简洁的版本

git log --graph --oneline // 用 --graph 选项查看历史中什么时候出现了分支、合并,开启了拓扑图选项

git log --reverse --oneline // 用 --reverse 参数来逆向显示所有日志

git log --author=Linus --oneline -5 // 查找指定用户的提交日志可以使用命令:git log --author -5 是显示近5个提交记录

// 指定日期可以执行几个选项:--since 和 --before,也可以用 --until 和 --after
// 如要看 Git 项目中三周前且在四月十八日之后的所有提交,可以执行这个(--no-merges 选项以隐藏合并提交)
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges

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

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

git blame <file>

git blame README // 示例

7. 远程操作

7.1 git remote 远程仓库操作

7.1.1 git remote -v 显示所有远程仓库

显示所有远程仓库:

git remote -v

注意:一般会用 origin 作为远程地址的别名

7.1.2 git remote show [remote] 显示某个远程仓库的信息

显示某个远程仓库的信息:

git remote show [remote]

git remote show https://github.com/tianqixin/runoob-git-test // 示例

7.1.3 git remote add [shortname] [url] 添加远程版本库

添加远程版本库:

git remote add [shortname] [url]

shortname 为远程仓库的ip别名,一般用origin,url为远程地址,如:

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

git push -u origin master

7.1.4 git remote rm name 删除远程仓库

删除远程仓库:

git remote rm name

7.1.5 git remote rename old_name new_name 修改仓库名

git remote rename old_name new_name

7.2 git fetch 从远程获取代码库

获取远程仓库最新的代码:

git fetch [alias]

将服务器上的任何更新(假设有人这时候推送到服务器了)合并到当前分支:

git merge [alias]/[branch]

注意: 为什么要用 git fetch 和 git merge 而不是直接用 git pull(git pull 其实就是git fetch + git merge)?
因为git pull会直接把你本地仓库中的代码进行更新但问题是可能会有冲突(conflicts),个人不推荐。先 git fetch origin(把远程仓库中origin最新代码取回),再 git merge origin/master(把本地代码和已取得的远程仓库最新代码合并),如果你的改动和远程仓库中最新代码有冲突,会提示,再去一个一个解决冲突。
示例:

git fetch origin

git merge origin/master

7.3 git pull 下载远程代码并合并

git pull 其实就是 git fetchgit merge FETCH_HEAD 的简写:

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

示例:

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

// 如果远程分支是与当前分支合并,则冒号后面的部分可以省略(本地分支不写就是默认当前分支)
git pull origin master

注意:origin 其实就是远程ip地址的别名,master 就是该地址仓库下的分支,brantest是本地的分支

7.4 git push 上传远程代码并合并

7.4.1 提交本地分支到远程分支

git push 命令用于从将本地的分支版本上传到远程并合并:

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

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

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

示例:

git push origin master  // 等同于 git push origin master:master

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

7.4.2 git push origin --delete master 删除远程分支

git push origin --delete master // 删除 origin 主机的 master 分支

8. Git 分支管理

几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

8.1 git branch (branchname) 创建分支

创建分支:

git branch (branchname)

注意:创建分支后需要手动切换到创建的分支下面

8.2 git checkout (branchname) 切换分支

切换分支:

git checkout (branchname)

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

8.3 git merge 合并分支

合并分支:

git merge

8.4 git branch 查看本地分支

查看分支:

git branch

在本地使用 git init 命令的时候会默认创建一个名为 master 的分支。

8.5 git checkout -b (branchname) 创建新分支并立即切换到该分支

创建新分支并立即切换到该分支:

git checkout -b (branchname)

8.6 git branch -d (branchname) 删除分支

删除分支:

git branch -d (branchname)

9. Git 标签

如果达到一个重要的阶段,并希望永远记住那个特别的提交快照,可以使用 git tag 给它打上标签。
比如说,我们想为我们的 runoob 项目发布一个"1.0"版本。 我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)“v1.0"的标签。
-a 选项意为"创建一个带注解的标签”。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。 我推荐一直创建带注解的标签。

9.1 git tag -a 添加标签

添加标签:

git tag -a v1.0 

执行 git log --decorate 时,可以看到添加的标签:

git log --decorate

9.2 git tag -a commit号 追加标签

给指定的commit号追加标签:

git tag -a v0.9 85fc7e7

9.3 git tag 查看所有标签

查看已存在的标签:

git tag

9.4 git tag -d 删除标签

删除标签:

git tag -d v1.1

9.5 git show 查看此版本所修改的内容

查看此版本所修改的内容:

git show v1.0

9.6 git tag -a -m [message] 指定标签信息命令

指定标签信息命令:

git tag -a <tagname> -m "runoob.com标签"

9.7 git tag -s -m [message] PGP签名标签命令

PGP签名标签命令:

git tag -s <tagname> -m "runoob.com标签"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值