常见Git命令示例
题记
众所周知,当前互联网开发代码、分支管理工具大多采用Git 或SVN ,且Git 使用的场景越来越多,对于分支的管控,支持的命令更加丰富,那么我们如何灵活的使用相关的命令呢,请让我们一起探索。
常用命令示例
git 仓库交互示例
git init
git init repository_demo
初始化后,会在 repository_demo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
git commit
$ git add *.c $ git add README $ git commit -m ‘首次提交’
git clone
git clone https://gitee.com/shang_xs/project-learn.git project-learn
git config
查看 git 配置信息
$ $ git config --list diff.astextplain.textconv=astextplain filter.lfs.clean=git-lfs clean – %f filter.lfs.smudge=git-lfs smudge – %f filter.lfs.process=git-lfs filter-process filter.lfs.required=true http.sslbackend=openssl http.sslcainfo=D:/software/Git/mingw64/ssl/certs/ca-bundle.crt core.autocrlf=true core.fscache=true core.symlinks=false pull.rebase=false credential.helper=manager-core credential.https://dev.azure.com.usehttppath=true init.defaultbranch=master user.email=‘your_email@domain.com’ user.name=‘your_name_sxs’ core.repositoryformatversion=0 core.filemode=false core.bare=false core.logallrefupdates=true core.symlinks=false core.ignorecase=true remote.origin.url=https://gitee.com/shang_xs/project-learn.git remote.origin.fetch=+refs/heads/:refs/remotes/origin/ branch.master.remote=origin branch.master.merge=refs/heads/master
编辑当前git 仓库的config 文件 git config -e
编辑整个git 仓库的config 文件 git config -e --global
设置全局 提交代码的用户信息 $ git config --global user.name “shang_xs” $ git config --global user.email shang_xs@163.com
git add
该命令可将该文件添加到暂存区
添加一个或多个文件到暂存区 git add [file1] [file2] ...
添加指定目录到暂存区,包括子目录 git add [dir]
添加当前目录下的所有文件到暂存区 git add .
git status
该命令用于查看在你上次提交之后是否有对文件进行再次修改, -s 标识简化结果显示
$ git status $ git status -s
git diff
git diff 命令比较文件的不同,即比较文件在暂存区和工作区的差异。 git diff 命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。
git diff
有两个主要的应用场景 尚未缓存的改动:git diff 查看已缓存的改动: git diff --cached 查看已缓存的与未缓存的所有改动:git diff HEAD 显示摘要而非整个 diff :git diff --stat
显示暂存区和工作区的差异 $ git diff [file]
git diff 示例
git diff --git a/src/main/java/com/learn/demo/data/structure/LinkedBlockingQuestion.java b/src/main/java/com/learn/demo/data/structure/LinkedBlockingQuestion.java
index 4ff17d7..78c2440 100644
--- a/src/main/java/com/learn/demo/data/structure/LinkedBlockingQuestion.java
+++ b/src/main/java/com/learn/demo/data/structure/LinkedBlockingQuestion.java
@@ -28,13 +28,13 @@ public class LinkedBlockingQuestion {
}
- private static void testclear() {
- int sizeBefore = queue.size();
- System.err.println("清空队列前,队列长度:" + sizeBefore);
- queue.clear();
- int sizeAfter = queue.size();
- System.err.println("清空队列后,队列长度:" + sizeAfter);
- }
+
+
+
+
+
+
+
显示暂存区和上一次提交(commit)的差异 $ git diff --cached [file] 或 $ git diff --staged [file]
显示两次提交之间的差异 $ git diff [first-branch]…[second-branch]
git commit
git commit 命令将暂存区内容添加到本地仓库中。
提交暂存区到本地仓库中 git commit -m [message]
提交暂存区的指定文件到仓库区 $ git commit [file1] [file2] ... -m [message] -a 参数设置修改文件后不需要执行 git add 命令,直接来提交
$ git commit -a 设置提交代码时的用户信息 开始前我们需要先设置提交的用户信息,包括用户名和邮箱 $ git config --global user.name “shang_xs” $ git config --global user.email shang_xs@163.com 如果去掉 --global 参数只对当前仓库有效
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 参数 ,它会删除回退点之前的所有信息
git rm
将文件从暂存区和工作区中删除 git rm <file>
以下实例从暂存区和工作区中删除 runoob.txt 文件 git rm runoob.txt
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
强行从暂存区和工作区中删除修改后的 runoob.txt 文件 git rm -f runoob.txt
如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可 git rm --cached <file>
以下实例从暂存区中删除 runoob.txt 文件 git rm --cached runoob.txt
递归删除 git rm –r *
git mv
git mv 命令用于移动或重命名一个文件、目录或软连接 git mv [file] [newfile]
如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数 git mv -f [file] [newfile]
添加一个 README 文件 $ git add README 然后对其重命名 $ git mv README README.md $ ls README.md
git log
查看历史提交记录
用 --oneline 选项来查看历史记录的简洁的版本 git log --online
用 --reverse 参数来逆向显示所有日志 $ git log --reverse --oneline
查找指定用户的提交日志 git log --author
三周前且在四月十八日之后的所有提交,可以执行这个(还用了 --no-merges 选项以隐藏合并提交) git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
git blame <file>
看指定文件的修改记录,以列表形式查看指定文件的历史修改记录 git blame <file>
git remote
显示所有远程仓库 git remote -v
显示某个远程仓库的信息 git remote show [remote]
$ git remote show https://gitee.com/shang_xs/project-learn.git
- remote https://gitee.com/shang_xs/project-learn.git
Fetch URL: https://gitee.com/shang_xs/project-learn.git Push URL: https://gitee.com/shang_xs/project-learn.git HEAD branch: master Local ref configured for ‘git push’: master pushes to master (up to date)
添加远程版本库 git remote add [shortname] [url]
shortname 为本地的版本库,提交到 gitee $ git remote add origin git@gitee.com:shang_xs/project-learn.git $ git push -u origin master
remote 其他相关命令
git remote rm name # 删除远程仓库 git remote rename old_name new_name # 修改仓库名
git fetch
从远端仓库提取数据并尝试合并到当前分支 git merge
该命令就是在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支
假设你配置好了一个远程仓库,并且你想要提取更新的数据,你可以首先执行 git fetch [alias]
以上命令告诉 Git 去获取它有你没有的数据,然后你可以执行 git merge [alias]/[branch]
git pull
git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写 git pull <远程主机名> <远程分支名>:<本地分支名>
示例 $ git pull $ git pull origin 将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并 git pull origin master:brantest
如果远程分支是与当前分支合并,则冒号后面的部分可以省略 git pull origin master
git push
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
git branch
创建分支命令 git branch (branchname)
切换分支命令 git checkout (branchname)
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录 合并分支命令 git merge
Git 分支管理
列出分支 git branch
如果我们要手动创建一个分支。执行 git branch (branchname) 即可 git branch dev
分支切换 git checkout -b dev
分支合并 git merge
冲突解决 git diff 查看冲突内容 手动处理冲突文件后,执行 git add git -am commit 'conflict resolution'
git tag
git -a 选项意为"创建一个带注解的标签" git tag -a v1.0
git tag 示例
$ git log commit d8d8d68cbeb84ea63e8e8cabb9a1c4c33bfbc5d4 (HEAD -> master, origin/master, origin/HEAD) Author: xxxxxxshang_xs@163.com Date: Mon Jun 24 20:20:03 2019 +0800 快速排序
$ git tag -a v0.01 d8d8d68 git log --oneline --decorate --graph
如果我们要查看所有标签可以使用以下命令 $ git tag v0.01 v0.02
指定标签信息命令 git tag -a <tagname> -m "runoob.com标签"
PGP 签名标签命令 git tag -s <tagname> -m "runoob.com标签"
相关命令参考
Quick reference guides :
GitHub Cheat Sheet | Visual Git Cheat Sheet Complete list of all commands
Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
Guides
Email
External Systems
Administration
Server Admin
Plumbing Commands
|