git 的初级使用教程
记录常用的 git 命令,方便自己查询
创建新仓库
Create a new repository
1 2 3 4 5 6
| $ git clone git@github.com:sundongzhi/chouti-react.git $ cd chouti-react $ touch README.md $ git add README.md $ git commit -m "add README" $ git push -u origin master
|
Existing folder
1 2 3 4 5 6
| $ cd existing_folder $ git init $ git remote add origin git@github.com:sundongzhi/chouti-react.git $ git add . $ git commit -m "Initial commit" $ git push -u origin master
|
Existing Git repository
1 2 3 4 5
| $ cd existing_repo $ git remote rename origin old-origin $ git remote add origin git@github.com:sundongzhi/chouti-react.git $ git push -u origin --all $ git push -u origin --tags
|
clone 本地仓库
1
| $ git clone /path/to/repository
|
从远程仓库 clone
1
| $ git clone username@host:/path/to/repository
|
工作流
你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。

添加和提交
1 2 3 4 5 6 7
| $ git add <filename> $ git add * $ git add .
$ git commit -m "代码提交信息"
$ git commit -a 相当于 git add + git commit
|
推送改动
你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:
1
| $ git push origin master
|
可以把 master 换成你想要推送的任何分支。
如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
1
| $ git remote add origin <server>
|
远程仓库
1 2 3 4 5 6
| $ git remote -v //显示远程仓库信息
$ git remote rm origin //删除远程链接
$ git remote set-url origin git@github.com:michaelliao/learngit.git //更改远程仓库地址,通常用来切换ssh和https
|
如此你就能够将你的改动推送到所添加的服务器上去了。
分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

创建一个叫做“feature_x”的分支,并切换过去:
1 2 3 4 5 6 7 8 9
| $ git branch 查看本地分支
$ git branch -a 查看本地和本地fetch到的远程分支都显示出来
$ git branch -r 查看本地fetch到的远程分支(只显示本地存储的远程分支)
$ git checkout -b feature_x
|
切换回主分支:
再把新建的分支删掉:
1 2
| $ git branch -d feature_x //删除已经合并的分支 $ git branch -D feature_x //强行删除未合并的分支
|
重命名分支
1
| $ git branch -m devel develop
|
除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:
1
| $ git push origin <branch>
|
更新与合并
1 2
| $ git pull $ git diff <source_branch> <target_branch>
|
标签
以执行如下命令创建一个叫做 1.0.0 的标签:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| $ git tag v1.0.0 1b2e1d63ff //b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符
$ git tag //显示所有tag标签
$ git show v1.0 //查看标签信息
//打一个完整的标签 -a 制定标签的名字 -m 注释 最后的数字代表HEAD制定从哪次提交打标签 $ git tag -a v0.1 -m "version 0.1 released" 3628164
$ git tag -d v1.0 //删除本地标签
$ git push origin :refs/tags/v0.9 //删除远程标签 需要先将本地标签删除
$ git push origin v1.0 //将标签推送到远程仓库
$ git push origin --tags //一次性推送全部尚未推送到远程的本地标签:
//使用 gpg(GnuPG)签名来打标签但是不常用 $ git tag -s v0.2 -m "signed version 0.2 released" fec145a
|
log
更多高级用法参考这里
1 2 3 4 5 6 7 8 9 10 11 12 13
| $ git log
$ git log --author=toshiba
$ git log --pretty=oneline
$ git log --graph --oneline --decorate --all
$ git log --graph --pretty=oneline --abbrev-commit
$ git log --name-status
$ git log --help
|
git fetch
1 2 3 4 5 6 7 8
|
$ git fetch <remote>
$git fetch <remote> <branch>
|
替换本地改动
假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:
1 2
| $ git checkout -- <filename> //此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。 //已添加到暂存区的改动以及新文件都不会受到影响。
|
如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它
1 2
| $ git fetch origin $ git reset --hard origin/master
|
reset 参数
除了在当前分支上操作,你还可以通过传入这些标记来修改你的缓存区或工作目录:
- –soft – 缓存区和工作目录都不会被改变
- –mixed – 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
- –hard – 缓存区和工作目录都同步到你指定的提交
实用小贴士
1 2 3 4 5 6 7 8 9 10
| $ gitk
$ git config color.ui true
$ git config --global color.ui true
$ git config format.pretty oneline
$ git add -i
|
参考文章