Linux命令:git
Lasted 2020-01-01 20:55:49
git是一个分布式版本控制软件,最初为更好管理Linux内核开发而设计。与CVS、Subversion等一类集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。
git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。git最为出色的是它的合并追踪(merge tracing)能力。
GIT GUI客户端
- GitHub Desktop,可用于第三方Git仓库网站。
- Git for Windows。
- TortoiseGit。
- Sourcetree。
安装Git
1. 在Linux上安装Git,并查看版本信息。
CentOS
yum install git
Debian
apt-get install git
git version
git version 1.8.3.1
常用命令
2. 使用git前你需要先配置用户名和email地址,git提交的时候需要使用。
配置用户名和邮箱
git config --global user.name "username"
git config --global user.email "mail@example.com"
显示当前配置信息
git config --list
user.name=username user.email=mail@example.com
3. 设置和取消密码。
git config --global user.password "password"
git config --global --unset user.password
4. 初始化本地仓库。
git init docsxyz
Initialized empty Git repository in /home/git/docsxyz/.git/
仓库创建成功后会生成.git目录,该目录为隐藏目录,需通过 ls -al查看。目录结构如下所示:
- branches:存放分支信息。
- config:存放各种设置文档。
- HEAD:指向当前所在分支的指针文件路径,一般指向refs下的某文件。
- hooks:存储钩子的文件夹。
- objects:存放git对象。
- refs:存储指向各个分支的指针(SHA-1标识)文件。
5. 克隆现有的仓库。
git clone https://github.com/ranxk/ranxkshell.git
Cloning into 'ranxkshell'... remote: Enumerating objects: 6, done. remote: Counting objects: 100% (6/6), done. remote: Compressing objects: 100% (6/6), done. remote: Total 21 (delta 0), reused 0 (delta 0), pack-reused 15 Unpacking objects: 100% (21/21), done.
6. 查看本地仓库修改状态。
git status
# On branch master # # Initial commit # # Untracked files: # (use "git add ..." to include in what will be committed) # # README.md nothing added to commit but untracked files present (use "git add" to track)
以上命令表示添加了README.md文件,需要执行git add ...命令添加文件。
7. 添加文件或目录。
git add .
8. 提交本地修改,添加备注信息。
git commit -am '添加README'
[master (root-commit) 0a03487] 添加README 1 file changed, 1 insertion(+) create mode 100644 README.md
查看本地仓库状态
git status
# On branch master nothing to commit, working directory clean
9. 推送本地到服务器。
git push
Counting objects: 11, done. Compressing objects: 100% (5/5), done. Writing objects: 100% (7/7), 716 bytes, done. Total 7 (delta 2), reused 4 (delta 1) To git@github.com:schacon/simplegit-progit.git a11bef0..ca82a6d master -> master
10. 查看提交日志。
git log
commit 0a034875a611144b93c80ed851c00cc2b6768c64 Author: username Date: Wed Jan 1 19:37:13 2020 +0800 添加README
只显示一行输出简化信息,短Hash值和备注信息
git log --oneline
0a03487 添加README
显示最近5次提交记录
git log -5
git log可以添加参数对输出格式进行控制,如下所示:
--oneline
显示简化信息。--name-only
显示提交文件。--stat
输出文件增删改的统计数据。-p
输出每个commit具体修改的内容,输出的形式以diff的形式给出。--pretty
自定义输出的信息。--author
限定输出给定的用户。-n
n表示你要输出的提交记录。--after
限定输出的开始时间,如:'10-1-2019'。--before
限定输出的结束时间,如:'10-1-2019'。
11. 格式化输出日志信息。
git log --pretty=format:"%h %s"
0a03487 添加README
以上命令作用类似,git log --oneline
,format支持的参数如下:
%H
提交对象(commit)的完整哈希字串。%h
提交对象的简短哈希字串。%T
树对象(tree)的完整哈希字串。%t
树对象的简短哈希字串。%P
父对象(parent)的完整哈希字串。%p
父对象的简短哈希字串。%an
作者(author)的名字。%ae
作者的电子邮件地址。%ad
作者修订日期(可以用-date= 选项定制格式)。%ar
作者修订日期,按多久以前的方式显示。%cn
提交者(committer)的名字。%ce
提交者的电子邮件地址。%cd
提交日期。%cr
提交日期,按多久以前的方式显示。%s
提交说明。
常见问题
fatal: could not read Username for 'https://github.com/': terminal prompts disabled
如果用户配置过ssh,可通过替换git@进行访问
如果git@github路径没问题,可以全局替换URL
git config --global --add url."git@github.com:".insteadOf "https://github.com/"