1.初始化git init
[root@foundation30 demo]# git init
Initialized empty Git repository in /root/demo/.git/
[root@foundation30 demo]# l.
. .. .git
[root@foundation30 demo]# cd .git/
[root@foundation30 .git]# ls
branches description hooks objects
config HEAD info refs
2.状态查看
git status;git ststus -s(最简)
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt
新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。 你可能注意到了 M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。 例如,上面的状态报告显示: README 文件在工作区被修改了但是还没有将修改后的文件放入暂存区,lib/simplegit.rb 文件被修改了并将修改后的文件放入了暂存区。 而 Rakefile 在工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录
3.添加;提交
git add readme.md
[root@foundation30 demo]# git add readme.md
[root@foundation30 demo]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached ..." to unstage)
#
# new file: readme.md
#
[root@foundation30 demo]# git status -s
A readme.md
git commit -m 'add readme.md'
[root@foundation30 demo]# git commit -m 'add readme.md'
[master (root-commit) 2fac4ae] add readme.md
Committer: root
4.忽略隐藏文件:
文件 .gitignore 的格式规范如下:
所有空行或者以 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。
匹配模式可以以(/)开头防止递归。
匹配模式可以以(/)结尾指定目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
5.全局变量
[root@foundation30 demo]# git config --global user.name wei
[root@foundation30 demo]# git config --global user.email "dreamer@westos.org"
[root@foundation30 demo]# cd
[root@foundation30 ~]# l.
. .gitconfig .viminfo
[root@foundation30 ~]# cat .gitconfig
[user]
name = wei
email = dreamer@westos.org
5.日至
[root@foundation30 demo]# git log
commit 0eb4a4aab961c461c98bee8f6b2c7aeda099c0fc
Author: wei .org>
Date: Fri Aug 24 01:32:40 2018 +0800
add test.txt
commit 2fac4ae85a3b4b6caa0ff63fb9a52ed46c14adba
Author: root .ilt.example.com>
Date: Fri Aug 24 01:27:20 2018 +0800
add readme.md
[root@foundation30 demo]# git log --pretty=oneline
0eb4a4aab961c461c98bee8f6b2c7aeda099c0fc add test.t
2fac4ae85a3b4b6caa0ff63fb9a52ed46c14adba add readme
6.回退
通过16进制将每个文件状态标记区分利用指针进行定位
工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。
编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。所以使用 Git 时文件的生命周期如下:
[root@foundation30 demo]# git reset --hard HEAD^
HEAD is now at 2fac4ae add readme.md
[root@foundation30 demo]# ls
readme.md
[root@foundation30 demo]# cat readme.md
westos
[root@foundation30 demo]# git log --pretty=oneline
2fac4ae85a3b4b6caa0ff63fb9a52ed46c14adba add readme
[root@foundation30 demo]# rm -f readme.md
[root@foundation30 demo]# git reflog
2fac4ae HEAD@{0}: reset: moving to HEAD^
0eb4a4a HEAD@{1}: commit: add test.txt
2fac4ae HEAD@{2}: commit (initial): add readme.md
[root@foundation30 demo]# git reset --hard 0eb4a4a
HEAD is now at 0eb4a4a add test.txt
[root@foundation30 demo]# ls
readme.md test.txt
[root@foundation30 demo]# git status -s
[root@foundation30 demo]# vim test.txt
[root@foundation30 demo]# git status -s
M test.txt
[root@foundation30 demo]# git checkout -- test.txt
[root@foundation30 demo]# cat test.txt
westos
[root@foundation30 demo]# vim test.txt
[root@foundation30 demo]# git status
# On branch master
# Changes not staged for commit:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# modified: test.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
[root@foundation30 demo]# git checkout -- test.txt
[root@foundation30 demo]# git status # On branch master
nothing to commit, working directory clean
[root@foundation30 demo]# git reset HEAD
[root@foundation30 demo]# git reset HEAD test.txt
[root@foundation30 demo]# ls
readme.md test.txt
[root@foundation30 demo]# cat test.txt
westos
5. 本地推送
[root@foundation30 demo]# ssh-keygen
[root@foundation30 demo]# cd
[root@foundation30 ~]# cd .ssh/
[root@foundation30 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCT0DlAuxP9QWmzOpkPrBomsWsBmZtpy/QZgpCpx6HArY2E9jWa/BZJ3dlhrlM4A22p/Ss0y+o5b5QK/aQhYYVU+n3zsm3pdZyhakuTLYep7tdaMwd1AHT3yarUgSt5AXaL4gOOtyxTkD/frUDmTWdMXFk02cdNa7YTfllOK1KG4qBYNI9/SX7g4NtgYwQ2DE/eanUddwretXVnVzrOeGW3YZjxIyORf/I02Na+sbRqhAIi+YLG7kDSUpfPtdPUdjLsrs6j9b0xxx9qWLhrvbbiswVisBZFxSWFlFQw7EPFENye3KAk0UW+BSj3DBR9LWy/BT9vka3U/X1V3/1QKtB3 root@foundation30.ilt.example.com
[root@foundation30 demo]# git remote add origin https://github.com/dreamerxixixi/root.git #通过http从本地推送需要输入密码和用户
[root@foundation30 demo]# git push -u origin master
Username for 'https://github.com': dreamerxixixi
Password for 'https://[email protected]':
Counting objects: 8, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (8/8), 661 bytes | 0 bytes/s, done.
Total 8 (delta 0), reused 0 (delta 0)
To https://github.com/dreamerxixixi/root.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
[root@foundation30 demo]# cat readme.md
westos
westos
Westos