git - 初级
常用命令
git init
可以初始化一个本地的 git 仓库,将创建一个 .git
隐藏文件夹,存储本地多次提交的历史信息。
git clone
git clone [url] :GitHub 上每一个项目都有一个 url,使用这个命令可以从远程克隆一个仓库。
git clone 也可以从本地一个目录克隆到另一个目录:
- 创建 test 文件夹,并使用 git init 命令
- 使用 git clone test test2 命令克隆本地仓库,报出 warning 称克隆了一个空的文件夹
$ mkdir test
$ cd test
$ git init
$ git clone test test2
Cloning into 'test2'...
warning: You appear to have cloned an empty repository.
done.
git add
git add . 将添加所有文件到暂存区,git add [filename] 将添加某个文件到暂存区。
$ touch a
$ touch b
$ git add .
$ git reset HEAD b
创建了文件 a 和文件 b,添加两份文件进入暂存区,但是想撤销添加文件 b,可以使用撤销添加的命令:git reset HEAD [filename] ,此时暂存区就只添加了文件 a。git 给了很充分的提示:
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: a
Untracked files:
(use "git add <file>..." to include in what will be committed)
b
git status
在上面的 add
操作中,使用了 git status 查看当前文件的状态,其实可以使用 git status -s
命令得到更加简短的输出:
$ touch a.txt
$ git status -s
?? a.txt # ?? 表示文件还没有添加进入暂存区
$ git add a.txt
$ git status -s
A a.txt # A 表示文件已经添加进入暂存区
$ vim a.txt
$ git status -s
AM a.txt # AM 表示文件添加进入暂存区后又进行了修改
git commit
git commit -m "message" :提交暂存区的文件到本地仓库
git commit --amend:修改当前提交的 commit,会形成另一个 commit
git reset origin/master --hard:可以恢复到原来的 commit
git log
git log 可以查看 commit 的所有记录
git log --oneline 则以一行的形式简短展示每次 commit
git log --graph 则是以图的形式展示了分支的拓扑图
file
↓ git add
————————————
| 暂存区 |
————————————
↓ git commit
————————————
| 仓库 |
————————————
↓ git push
————————————
| 远程仓库 |
————————————
git remote
git remote 命令查看当前本地仓库连接了哪些远程仓库
git remote -v 则显示更为详细的信息
git push
git push 是将本地仓库和远程仓库连接的重要命令,以 GitHub 的连接为例,需要先在 GitHub 上创建一个空的远程仓库,接下来会提示你如何连接:
# 本地没有仓库时需要做的
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:ChenBin113/test.git
git push -u origin master
# 本地有仓库需要做的
git remote add origin git@github.com:ChenBin113/test.git
git push -u origin master
主要是第一次连接需要添加远程仓库的地址,以后只需要在 commit 命令后使用 git push 命令即可。
网络不稳定,偶尔会出现 push 不成功的现象,隔一段时间重新 push 即可;或者在项目目录下有隐藏文件夹 .git,进入其中修改 config 文件,使用命令为 vim .git/config
。
将其 url = git@github.com:ChenBin113/test.git
修改为 url = https://github.com/ChenBin113/test
,即可使用 https 协议进行 push。
git reset
git reset [id] 可以回退未 push 的版本;窗口没有关闭时,仍能撤销回退,只要记得版本 id 号就行
git reset origin/master --hard 可以回退到 origin/master 版本