01、初始化仓库
$ git init
02、Untrack和Modified文件加入暂存区
$ git add *.c
$ git add LICENSE
03、暂存区文件提交到仓库(文件加入暂存区后,又被修改,只会提交加入暂存区的文件状态)
$ git commit -m 'init project version'
$ git commit (弹出编辑器,供编辑提交信息)
$ git commit -v (弹出编辑器,且默认带上git diff的内容,供编辑提交信息)
$ git commit -a -m 'commit all tracked file' (跳过暂存步骤,提交所有被管理的文件)
04、从远程仓库克隆
$ git clone https://github.com/libgit2/libgit2 (当前目录创建libgit2目录,并从远程仓库克隆.git文件夹,然后读取最新版本的文件拷贝到工作目录)
$ git clone https://github.com/libgit2/libgit2 mylibgit(当前目录创建mylibgit目录)
05、检查工作区文件状态
$ git status
可能结果: nothing to commit, working directory clean (工作区很干净)
Untracked files: (工作区有新增文件)
Changes to be comitted: (暂存文件未提交)
Changes not staged for commit: (已提交的文件被修改,且未暂存)
注:当文件同时在Changes to be comitted:和Changes not staged for commit:,说明暂存文件被修改
06、工作区文件状态简览
$ git status -s $ git status --short
M README (被修改,且没放入暂存区)
MM Rakefile (被修改,放入暂存区后又被修改)
A lib/git.rb (新添加到暂存区文件)
M lib/simplegit.rb (被修改,且放入暂存区)
?? LICENSE.txt (新添加Untracked文件)
07、查看修改
$ git diff (查看未暂存修改)
$ git diff --staged (查看已暂存的修改)
$ git difftool --tool-help (查看系统支持的差异对比插件)
$ git difftool --tool=vimdiff3 (用vimdiff3插件查看未暂存修改)
$ git difftool --staged --tool=vimdiff3 (用vimdiff3插件查看已暂存修改)
08、删除文件
$ git rm README (从工作目录 & 暂存区删除README文件,git commit即可提交。若手动删除文件,需要先保存到暂存区,再提交)
$ git rm -f log/*.log (已修改未暂存或已暂存 的文件需要强制从暂存区删除才能成功。删除log目录下,任何以.log结尾的文件)
$ git rm --cached *~ (从暂存区删除任何以~结尾的文件,*号需要转义,但工作区保留)
09、移动文件
$ git mv file_from file_to
等价于
$ mv README.md README
$ git rm README.md
$ git add README
此时,查看git status
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
10、撤销操作--amend
- $ git commit fileA -m 'commit file A'
- $ git add fileB
- $ git commit --amend -m 'commit file A and file B' (会与第一步的提交合并,只有1条提交记录)
11、取消暂存
$ git reset HEAD fileName
$ git reset HEAD fileName --hard(可能导致工作目录当前所有进度丢失)
12、撤销工作区修改
$ git checkout -- file (不可逆,慎用)
13、远程仓库操作
$ git remote (展示远程仓库简写名)
$ git remote -v (展示远程仓库简写名 & 地址 & 推拉信息)
$ git remote add <shortname> <url> (添加远程仓库)
$ git fetch [remote-name] (从远程仓库拉取)
$ git push <remote-name> <local-branch> (将本地分支推到远程仓库)
$ git remote show [remote-name] (查看远程仓库详细信息)
$ git remote rename <old-remote-name> <new-remote-name> (远程仓库重命名)
$ git remote rm <remote-name> (移除远程仓库,仅仅删掉本地)
14、简介的远程仓库操作
$ git clone <remote-url> (克隆远程仓库,并命名为origin,且设置本地master分支跟踪远程master分支)
$ git push origin master (远程仓库名orgin,且推送本地master分支)