《LINUX入门:一些常用的Git命令》要点: 本文介绍了LINUX入门:一些常用的Git命令,希望对您有用。如果有疑问,可以联系我们。
整理了非常由于的Git一些常用命令,Git是目前世界上最先进的分布式版本控制系统.由于它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在本身的电脑上.既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说本身在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了.
1、init,创立一个git仓库 [root@linuxidc git]# cd /usr/local/ [root@linuxidc local]# mkdir github [root@linuxidc local]# cd github [root@linuxidc git]# git init Initialized empty Git repository in /usr/local/github/.git/ [root@linuxidc git]# ls -a .? ..? .git
2、status,反省状态 [root@linuxidc git]# touch code1.py [root@linuxidc git]# git status? # On branch master # Untracked files: #? (use "git add <file>..." to include in what will be committed) # #? code1.py nothing added to commit but untracked files present (use "git add" to track)
3、add,文件添加到索引,也便是接受版本控制
[root@linuxidc git]# git add code1.py? [root@linuxidc git]# git status? # On branch master # Changes to be committed: #? (use "git reset HEAD <file>..." to unstage) # #? new file:? code1.py #
4、commit,提交 [root@linuxidc git]# git commit -m "New add code1.py" #第一次会提示我们输入信息,名字与邮件 [master 7894d32] New add code1.py ?Committer: root <root@linuxidc.(none)> Your name and email address were configured automatically based on your username and hostname. Please check that they are accurate. You can suppress this message by setting them explicitly: ? ? ? git config --global user.name "Your Name" ? ? git config --global user.email you@example.com ? If the identity used for this commit is wrong,you can fix it with: ? ? ? git commit --amend --author='Your Name <you@example.com>' ? ?0 files changed,0 insertions(+),0 deletions(-) ?create mode 100644 code1.py [root@linuxidc git]# git config --global user.name sunshine? ? ? ? ? ? ? ? #名字 [root@linuxidc git]# git config --global user.email sunshine@git.com? ? ? #邮件地址 [root@linuxidc git]# git config --global color.ui? ? ? ? ? ? ? ? ? ? ? ? ? #auto显示色彩
5、branc 创建、查看、删除分支 [root@linuxidc git]# git branch * master [root@linuxidc git]# git branch dev [root@linuxidc git]# git branch ? dev * master [root@linuxidc git]# git branch -d dev Deleted branch dev (was 7894d32). [root@linuxidc git]# git branch * master ? #删除分支会有另外一种诡异的现象发生 [root@linuxidc git]# git checkout -b dev1? ? ? ? #创建并切换dev1分支 Switched to a new branch 'dev1' [root@linuxidc git]# cat code.py? [root@linuxidc git]# echo "print 'Sunshine Good~'" > code.py? #输出内容至code.py [root@linuxidc git]# cat code.py? print 'Sunshine Good~' [root@linuxidc git]# git add code.py? [root@linuxidc git]# git commit -m "New add rom 'Sunshine Good~'" [dev1 865c84e] New add rom 'Sunshine Good~' ?1 files changed,1 insertions(+),0 deletions(-) [root@linuxidc git]# git checkout master? ? ? ? ? ? ? ? ? ? #切换至master Switched to branch 'master' [root@linuxidc git]# cat code.py? ? ? ? ? ? ? ? ? ? ? ? ? ? #查看mastercode.py,没有内容 [root@linuxidc git]# git branch -d dev1? ? ? ? ? ? ? ? ? ? #删除分支dev1报错,俩中办法,第一dev1确实不是我需要的,那么小d换成大D即可,第二个就下面步骤 error: The branch 'dev1' is not fully merged. If you are sure you want to delete it,run 'git branch -D dev1'. [root@linuxidc git]# git merge dev1? ? ? ? ? ? ? ? ? ? ? ? #合并分支dev1至master Updating bf266f5..865c84e Fast-forward ?code.py |? ? 1 + ?1 files changed,0 deletions(-) [root@linuxidc git]# cat code.py? print 'Sunshine Good~' [root@linuxidc git]# git branch -d dev1? ? ? ? ? ? ? ? ? ? #使用小d删除分支dev1,删除成功 Deleted branch dev1 (was 865c84e). [root@linuxidc git]#
6、checkout 切换 创立分支 [root@linuxidc git]# git checkout -b dev Switched to a new branch 'dev' [root@linuxidc git]# git branch * dev ? master [root@linuxidc git]# git checkout master Switched to branch 'master' [root@linuxidc git]# git branch ? dev * master
7、clone 克隆一个repository 信息在当地目录,哪自己之前做好的gitolite [root@redis_master ~]# git clone git@127.0.0.1:dev Initialized empty Git repository in /root/dev/.git/ remote: Counting objects: 9,done. remote: Compressing objects: 100% (3/3),done. remote: Total 9 (delta 0),reused 0 (delta 0) Receiving objects: 100% (9/9),done. [root@redis_master ~]# ls anaconda-ks.cfg? appendonly.aof? dev? id_rsa.pub? install.log? install.log.syslog [root@redis_master ~]# cd dev/ [root@redis_master dev]# ls test.txt
8、diff 对比文件 [root@linuxidc git]# ls code1.py? code.py [root@linuxidc git]# git status? # On branch master nothing to commit (working directory clean) [root@linuxidc git]# vim code1.py? [root@linuxidc git]# git diff? ? ? ? ? ? ? ? ? ? #这里是对比暂存区与工作区对比 diff --git a/code1.py b/code1.py index e69de29..66708be 100644 --- a/code1.py +++ b/code1.py @@ -0,0 +1 @@ +print 'Sunshine Good!' [root@linuxidc git]# git diff --staged? ? ? ? ? ? #这里是暂存区对比staged也便是我们commit的staged区 [root@linuxidc git]# git add code1.py? ? ? ? ? ? #添加到暂存区 [root@linuxidc git]# git diff? ? ? ? ? ? ? ? ? ? #工作区对比暂存区 [root@linuxidc git]# git diff --staged? ? ? ? ? ? #暂存区对比commit的staged diff --git a/code1.py b/code1.py index e69de29..66708be 100644 --- a/code1.py +++ b/code1.py @@ -0,0 +1 @@ +print 'Sunshine Good!' [root@linuxidc git]# git commit -m "code1.py New add row Sunshine Good"? ? #提交 [master bf266f5] code1.py New add row Sunshine Good ?1 files changed,0 deletions(-) [root@linuxidc git]# git diff --staged? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #对比暂存区以staged区 [root@linuxidc git]# git diff? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #对比工作区对比暂存区
9、log 就是日志咯,不过这里显示的可能比较诡异 [root@linuxidc git]# git log? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #详细显示 commit bf266f5673089439efdd632a38b7220390af5cc7 Author: sunshine <sunshine@git.com> Date:? Wed Oct 5 23:34:03 2016 +0800 ? ? ? code1.py New add row Sunshine Good ? commit 7894d320ac92997fdb4d0c74487d87def3ebf756 Author: root <root@linuxidc.(none)> Date:? Wed Oct 5 23:20:29 2016 +0800 ? ? ? New add code1.py ? commit b4213472064fbc292eff843b6a67549344197495 Author: root <root@linuxidc.(none)> Date:? Wed Oct 5 21:45:23 2016 +0800 ? ? ? New add code.py [root@linuxidc git]# git log --oneline? ? ? ? ? ? ? ? ? ? ? #简要显示 bf266f5 code1.py New add row Sunshine Good 7894d32 New add code1.py b421347 New add code.py [root@linuxidc git]# git log --color --graph? ? ? ? ? ? ? ? #显示版天职支示意图? ? ? ? * commit bf266f5673089439efdd632a38b7220390af5cc7 | Author: sunshine <sunshine@git.com> | Date:? Wed Oct 5 23:34:03 2016 +0800 |? |? ? code1.py New add row Sunshine Good |? * commit 7894d320ac92997fdb4d0c74487d87def3ebf756 | Author: root <root@linuxidc.(none)> | Date:? Wed Oct 5 23:20:29 2016 +0800 |? |? ? New add code1.py |? * commit b4213472064fbc292eff843b6a67549344197495 ? Author: root <root@linuxidc.(none)> ? Date:? Wed Oct 5 21:45:23 2016 +0800 ? ? ? ? ? New add code.py
10、merge 合并分支 [root@linuxidc git]# ls code1.py? code.py [root@linuxidc git]# git checkout -b dev? ? ? ? #创立并切换至分支dev Switched to a new branch 'dev' [root@linuxidc git]# git branch? ? ? ? ? ? ? ? #查看当前位置所在分支 * dev ? master [root@linuxidc git]# vim code.py? [root@linuxidc git]# cat code.py? print 'Sunsine !' [root@linuxidc git]# git checkout master? ? ? ? #切换回master M? code.py Switched to branch 'master' [root@linuxidc git]# git merge dev? ? ? ? ? ? ? #合并分支dev Already up-to-date. [root@linuxidc git]# cat code.py? print 'Sunsine !' [root@linuxidc git]# git branch -d dev? ? ? ? ? #删除分支 Deleted branch dev (was bf266f5)
11、mv 重定名 [root@linuxidc git]# ls code1.py? code.py [root@linuxidc git]# git mv code1.py code.txt? ? ? ? #重定名code1.py-->code.txt [root@linuxidc git]# ls code.py? code.txt [root@linuxidc git]# git status? ? ? ? ? ? ? ? ? ? ? #查看状态,显示 #? renamed:? ? code1.py -> code.txt # On branch master # Changes to be committed: #? (use "git reset HEAD <file>..." to unstage) # #? renamed:? ? code1.py -> code.txt # [root@linuxidc git]# git add code.txt? [root@linuxidc git]# git commit -m " Modify file name code1.py-->code.txt" [master 924041d]? Modify file name code1.py-->code.txt ?1 files changed,0 deletions(-) ?rename code1.py => code.txt (100%)
12、rm 删除 [root@linuxidc git]# ll total 8 -rw-r--r-- 1 root root 23 Oct? 5 23:53 code.py -rw-r--r-- 1 root root 23 Oct? 5 23:32 code.txt [root@linuxidc git]# git rm code.txt? ? ? ? ? ? ? ? ? ? #删除code.txt rm 'code.txt' [root@linuxidc git]# ll total 4 -rw-r--r-- 1 root root 23 Oct? 5 23:53 code.py [root@linuxidc git]# git commit -am " Delete file code.txt" [master 82ec99e]? Delete file code.txt ?1 files changed,1 deletions(-) ?delete mode 100644 code.txt
13、show等价于rev-parse,只不外一个是简要一个是明细 [root@linuxidc git]# git show HEAD~? ? ? ? ? ? ? ? ? ? #看hash值 commit 924041d5e2924e945f67816775869d4ceb9694dd Author: sunshine <sunshine@git.com> Date:? Wed Oct 5 23:57:25 2016 +0800 ? ? ? Modify file name code1.py-->code.txt ? diff --git a/code.txt b/code.txt new file mode 100644 index 0000000..66708be --- /dev/null +++ b/code.txt @@ -0,0 +1 @@ +print 'Sunshine Good!' diff --git a/code1.py b/code1.py deleted file mode 100644 index 66708be..0000000 --- a/code1.py +++ /dev/null @@ -1 +0,0 @@ -print 'Sunshine Good!' [root@linuxidc git]# git rev-parse HEAD~? ? ? ? ? ? ? ? #仔细看hash值是一样的 924041d5e2924e945f67816775869d4ceb9694dd
14、cat-file 查看tree与parent [root@linuxidc git]# git cat-file -t HEAD~? ? ? ? ? ? #-t 显示commit commit [root@linuxidc git]# git cat-file -p HEAD~? ? ? ? ? ? #-p 显示tree与parent tree ea16f4c3781c4dc1f5e142eba114b0d5a1cefeaa parent 865c84e5f13fb239f83e3e27bcf0f3a28990034e author sunshine <sunshine@git.com> 1475683045 +0800 committer sunshine <sunshine@git.com> 1475683045 +0800 ? ?Modify file name code1.py-->code.txt
15、reset 这个就比拟复杂啦 [root@linuxidc git]# ll total 4 -rw-r--r-- 1 root root 23 Oct? 6 00:17 code.py [root@linuxidc git]# git log --oneline? ? ? ? ? ? ? ? ? ? #查看历史commit版本hash值82ec99e 82ec99e? Delete file code.txt 924041d? Modify file name code1.py-->code.txt 865c84e New add rom 'Sunshine Good~' bf266f5 code1.py New add row Sunshine Good 7894d32 New add code1.py b421347 New add code.py [root@linuxidc git]# ll total 4 -rw-r--r-- 1 root root 23 Oct? 6 00:17 code.py [root@linuxidc git]# git rm code.py? ? ? ? ? ? ? ? ? ? ? ? #删除文件code.py rm 'code.py' [root@linuxidc git]# git commit -am "Delete file code.py"? #commit -am等价于执行 #git add filename # git commit -m "Delete fie code.py",提示删除成功 [master 3271a1d] Delete file code.py ?1 files changed,1 deletions(-) ?delete mode 100644 code.py [root@linuxidc git]# ll? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #查看不存在 total 0 [root@linuxidc git]# git status? ? ? ? ? ? ? ? ? ? ? ? ? ? #也没报错 # On branch master nothing to commit (working directory clean) [root@linuxidc git]# git log --oneline? ? ? ? ? ? ? ? ? ? #查看commit版本hash值 3271a1d Delete file code.py 82ec99e? Delete file code.txt 924041d? Modify file name code1.py-->code.txt 865c84e New add rom 'Sunshine Good~' bf266f5 code1.py New add row Sunshine Good 7894d32 New add code1.py b421347 New add code.py [root@linuxidc git]# git reset --hard 82ec99e? ? ? ? ? ? ? #回滚到上个版本 HEAD is now at 82ec99e? Delete file code.txt [root@linuxidc git]# ll? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #OK文件回来了 total 4 -rw-r--r-- 1 root root 23 Oct? 6 00:18 code.py [root@linuxidc git]# git log --oneline? ? ? ? ? ? ? ? ? ? #回滚成功 82ec99e? Delete file code.txt 924041d? Modify file name code1.py-->code.txt 865c84e New add rom 'Sunshine Good~' bf266f5 code1.py New add row Sunshine Good 7894d32 New add code1.py b421347 New add code.py
16、tag 标签,由于commit都是以hash记录,所以tag是为快速界说而准备的 [root@linuxidc git]# git log --oneline? ? ? ? ? ? ? ? ? ? #查看commit版本的hash 2989e89 New add rom Sunshine bf266f5 code1.py New add row Sunshine Good 7894d32 New add code1.py b421347 New add code.py [root@linuxidc git]# git tag v0.1.2 2989e89? ? ? ? ? ? ? #为hash值2989e89打上标签v0.1.2 [root@linuxidc git]# git tag v0.1.3 bf266f5? ? ? ? ? ? ? #为hash值bf266f5打上标签v0.1.3 [root@linuxidc git]# git tag v0.1.1 v0.1.2 v0.1.3 [root@linuxidc git]# git tag v0.1.4? ? ? ? ? ? ? ? ? ? ? #修改代码或者增加功能都可以直接给上tag ? [root@linuxidc git]# git show 2989e89? ? ? ? ? ? ? ? ? ? #使用hash查找 commit 2989e8927da83be9087933c17b074adeb2e91e2c Author: sunshine <sunshine@git.com> Date:? Wed Oct 5 23:49:07 2016 +0800 ? ? ? New add rom Sunshine ? diff --git a/code.py b/code.py index e69de29..3a2a051 100644 --- a/code.py +++ b/code.py @@ -0,0 +1 @@ +print 'Sunsine !' [root@linuxidc git]# git show v0.1.2? ? ? ? ? ? ? ? ? ? #使用标签查找 commit 2989e8927da83be9087933c17b074adeb2e91e2c Author: sunshine <sunshine@git.com> Date:? Wed Oct 5 23:49:07 2016 +0800 ? ? ? New add rom Sunshine ? diff --git a/code.py b/code.py index e69de29..3a2a051 100644 --- a/code.py +++ b/code.py @@ -0,0 +1 @@ +print 'Sunsine !' [root@linuxidc git]# git tag -d v0.1.1? ? ? ? ? ? ? ? #删除标签 Deleted tag 'v0.1.1' (was 2989e89) [root@linuxidc git]# git tag v0.1.2 v0.1.3
17、pull 获取,这个用到我们之前搭建的gitolite
[root@redis_master dev]# git pull origin master? ? ? ? ? ? #没发现有人push,所以拉不到信息 From 127.0.0.1:dev ?* branch? ? ? ? ? ? master? ? -> FETCH_HEAD Already up-to-date. [root@redis_master dev]# git push -f? ? ? ? ? ? ? ? ? ? ? #为了测试这边使用-f强制笼罩更新 Counting objects: 32,done. Delta compression using up to 4 threads. Compressing objects: 100% (19/19),done. Writing objects: 100% (32/32),2.94 KiB,done. Total 32 (delta 0),reused 0 (delta 0) To git@127.0.0.1:dev ?+ 4197bf0...addfd8f master -> master (forced update) ? ? [root@redis_master dev]# git pull? ? ? ? ? ? ? ? ? ? ? ? #再试一下git pull remote: Counting objects: 24,done. remote: Compressing objects: 100% (16/16),done. remote: Total 23 (delta 0),reused 0 (delta 0) Unpacking objects: 100% (23/23),done. From 127.0.0.1:dev ?+ 4197bf0...addfd8f master? ? -> origin/master? (forced update) Merge made by recursive. ?855.py? ? |? ? 4 ++++ ?class.php |? ? 1 + ?2 files changed,5 insertions(+),0 deletions(-) ?create mode 100644 855.py ?create mode 100644 class.php [root@redis_master dev]# ll? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #拉取到代码了 total 8 -rw-r--r--. 1 root root 45 Oct? 6 01:03 855.py -rw-r--r--. 1 root root? 4 Oct? 6 01:03 class.php
18、push 推送,这个用到我们之前搭建的gitolite 12345678910111213141516 [root@redis_master dev]# git status? ? ? ? ? ? ? ? #查看状态 # On branch master nothing to commit (working directory clean) [root@redis_master dev]# cat test.txt? this is test file 555 [root@redis_master dev]# echo 44 >> test.txt? ? ? #修改内容 [root@redis_master dev]# git commit -am "New add string 44"? ? #commit并阐明 [master 4197bf0] New add string 44 ?1 files changed,0 deletions(-) [root@redis_master dev]# git push? ? ? ? ? ? ? ? ? ? #推送至我们的远程代码托管 Counting objects: 5,done. Writing objects: 100% (3/3),262 bytes,done. Total 3 (delta 0),reused 0 (delta 0) To git@127.0.0.1:dev ? 8a54bbe..4197bf0? master -> master
CentOS 6.7下Gitolite 服务搭建及TortoiseGit配置连接 见 .其实这里只是简简单单的介绍了下命令的正常场景所遇见的问题!~更深条理的下次介绍呗^-^,
更多 Git 教程系列文章:?
GitHub 使用教程图文详解? ?
Git使用图文具体教程?
Ubuntu Git安装与使用
Git 标签治理详解 ?
Git 分支治理详解 ?
Git 长途仓库详解 ?
Git 当地仓库(Repository)详解 ?
Git 服务器搭建与客户端安装? ?
Git 概述 ?
分享适用的GitHub 使用教程 ?
Git从入门到学会
Git根本操作详解
Git部署与常用根本命令详解? ?
散布式版本控制系统 Git 详细教程?
Git 的详细先容:请点这里 Git 的下载地址:请点这里
本文永远更新链接地址: 学习更多LINUX教程,请查看站内专栏,如果有LINUX疑问,可以加QQ交流《LINUX入门:一些常用的Git命令》。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|