Git的常用命令
Git 配置信息
- 身份信息
(- -global是全局参数,意味着本机中的所有仓库都共同使用。如果不加则只适用于本仓库。)
$ git config --global user.name "用户名"
$ git config --global user.mail "邮箱"
- 忽略特殊文件
在git工作区的根目录下创建.gitignore文件,将要忽略的文件填进去。
(windows下新建txt文件,另存为.gitignore即可得到.gitignore文件,并且要将.gitignore文件add,commit之后才可忽略所需文件。)
/bin/ 忽略整个bin目录
*.txt 忽略全部txt文件
......
- 配置别名
$ git config --global alias.ad add
$ git config --global alias.cit commit
创建仓库
-
创建一个新的本地仓库:
$ git init -
克隆一个远程仓库
$ git clone ssh://user@domain.com/repo.git
$ git clone http://user@domain.com/repo.git
- 远程库(以GitHub为例,创建完即可关联远程库)
1.创建ssh-key(ssh-key存储在用户主目录下单.ssh文件中。id_rsa文件存储私钥,id_rsa.pub存储公钥):$ ssh-keygen -t rsa -C "youremail@example.com"
2.登陆GitHub,打开“Account settings”,“SSH Keys”页面,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
本地修改
-
查看本地工作目录的状态:
$ git status -
查看修改内容:
$ git diff -
在下次提交前将修改文件到添加到stage状态:
$ git add <file> -
在下次提交前将全部修改文件添加到stage状态:
$ git add . -
提交stage状态中先前保存的文件:
$ git commit -m "描述信息" -
提交stage状态中的全部保存文件:
$ git commit -a -
删除文件
1.直接资源管理器删除等价于$ rm <file>
2.如果确实需要删除,再执行:$ git rm <file>,再执行:$ git commit -m "delete <file>"
3.如果误删且还未提交可执行:$ git checkout -- <file>回退到被删之前的状态。
4.如果误删且已提交则可执行:$ git reset --hard head^,另版本回到上一版本从而得到误删文件。
提交历史
-
显示所有提交历史,从新到旧:
$ git log -
显示所有命令历史:
$ git reflog -
显示单个文件的历史记录:
$ git log -p <file> -
显示谁在什么时间修改了文件中的什么内容:
$ git blame <file>
分支
-
显示所有分支,包括远程分支:
$ git branch -av -
显示本地分支:
$ git branch -
新建分支:
$ git branch <new-branch> -
新建一个分支并跳转到新分支:
$ git branch -b <new-branch> -
跳转到另一分支:
$ git checkout <branch> -
根据远程分支创建一个新的对应本地分支:
$ git checkout -b <branch> <remote/branch> -
删除分支:
$ git branch -D <branch> -
合并分支到当前分支:
$ git merge <branch> -
合并分支到当前分支并添加记录:
$ git merge --no--ff -m "commit" <branch> -
将分叉的提交变为直线:
$ git rebase <branch> -
存储分支状态:
$ git stash -
查看储存分支:
$ git stash list -
恢复分支并删除stash内容:
$ git stash pop -
恢复分支且不删除stash内容:
$ git stash apply
标签
- 为当前最新提交建立一个标签(默认为head,也可指定commit id前7位)
轻量标签:
一个特定提交的引用
$ git tag <tag-name> (例:v1.0)
附注标签:(建议使用)
存储在 Git 数据库中的一个完整对象。 它们是可以被校验的。其中包含打标签者的名字、电子邮件地址、日期时间;还有一个标签信息。并且可以使用 GNU Privacy Guard (GPG)签名与验证。
(-a指定标签名,-m指定说明文字)
$ git tag -a <tag-name> -m "标签详细说明" (例:-a v1.0 -m "正式版第一版")
- 显示所有标签:
$ git tag - 显示标签说明文字:
git show <tag_name> - 推送一个标签:
$ git push origin <tag_name> - 推送所有未推送标签:
$ git push --tags - 删除本地标签:
$ git tag -d <tag_name> - 删除远程标签:
$ git push origin :refs/tags/<tag_name>
更新与推送
- 获取远程库当前配置信息:
$ git remote -v - 显示远程库信息(github的远程库名默认为origin):
$ git remote show <remote> - 关联远程库:
$ git remote add <shortname><url>(例:$ git remote add origin git@server-name:path/repo-name.git) - 下载远程库某分支的所有更新并且直接合并到当前head中:
$ git pull <remote><branch> - 第一次推送master分支的所有内容:
$ git push -u origin master,以后再次推送时:$ git push origin master - 推送本地某分支的所有更新到远程库中:
$ git push <remote> <branch> - 删除远程库分支:
$ git branch -dr <remote/branch>
撤销
- 丢弃掉本工作目录下的所有更改(head表示当前版本):
$ git reset --hard head - 丢弃工作区某文件的更改:
$ git checkout -- <file> - 丢弃暂存区的修改:
$ git reset head <file> - 回退到上一个版本(head^^上上个版本,head~10上十个版本):
$ git reset --hard head^ - 回退到指定版本:
$ git reset --hard <commit id>
Git的使用建议
-
多多使用commit,每一次的commit都应当与修改的内容相关。比如修改两个不同的bug,则每一个bug都应该有一个相关的commit。
-
不要commit还未完成的工作。
-
在commit之前需要完成代码的测试工作。
-
如何写一个好的commit呢?
1.这一次的修改动机是什么。
2.这次修改和之前有什么区别。 -
多使用分支来开发新功能或者修改bug。
-
查看帮助文档总是有没错的:
" $ git help -
建立新仓库的步骤:
-
$ git init//初始化仓库 -
$ git add .(文件name)//添加文件到本地仓库 -
$ git commit -m "first commit"//添加文件描述信息 -
$ git remote add <shortname><url>(例:$ git remote add origin git@server-name:path/repo-name.git)//链接远程仓库,创建主分支 -
$ git pull <remote><branch>// 把本地仓库的变化连接到远程仓库主分支 -
$ git push -u origin master//把本地仓库的文件推送到远程仓库
参考
git-book
http://www.runoob.com/w3cnote/android-tutorial-git-repo-operate.html);
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
683

被折叠的 条评论
为什么被折叠?



