Git命令那么多,你还记得几个呢?

213 阅读6分钟

初次运行 Git 前的配置

设置Git的user name和email:

$ git config --global user.name "名字"

$ git config --global user.email "邮箱"

生成SSH密钥过程:

1.查看是否已经有了ssh密钥:cd ~/.ssh 如果没有密钥则不会有此文件夹,有则备份删除

2.生存密钥:$ ssh-keygen -t rsa -C "邮箱"按3个回车,密码为空 .在github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥

获取 Git 仓库

在现有目录中初始化仓库

git init 初始化仓库

1、创建一个新目录作为代码仓库

2、执行 git init; 执行之后会发现多了一个.git目录 这就说明仓库已经初始完成

在一个已经存在文件的文件夹(而不是空文件夹)中初始化 Git 仓库

*$ git add .c

$ git add LICENSE

$ git commit -m 'initial project version'

通过 git add 命令来实现对指定文件的跟踪,然后执行 git commit 提交

克隆一个项目

git clone [url]

比如,要克隆 Git 的可链接库 libgit2,可以用下面的命令

$ git clone github.com/libgit2/lib…

你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以使用如下命令

$ git clone github.com/libgit2/lib… mylibgit

这将执行与上一个命令相同的操作,不过在本地创建的仓库名字变为 mylibgit。

Git 支持多种数据传输协议。 上面的例子使用的是 https:// 协议,不过你也可以使用 git:// 协议或者使用 SSH 传输协议

分支

Git鼓励大量使用分支:

创建分支:git branch 'name' (默认当前所在分支为基础分支,可以指定其它分支)

切换分支:git checkout 'name'

创建+切换分支:git checkout -b <基础分支名称>(origin/master)

提交刚创建的分支:git push origin branch-name

更新分支:Git pull origin branchname or Git fetch origin branchname git merge --no-ff 目标分支

合并某分支到当前分支:git merge --no-ff <branch1分支名称>(把分支branch1合并到当前分支上)

git merege (fast forward and --no-ff )

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

请注意--no-ff参数,表示禁用Fast forward请注意--no-ff参数,表示禁用Fast forward

git merge --no-ff -m "merge with no-ff" dev

因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去

查看本地分支:git branch or git branch -l

查看远程分支:git branch -r

查看所有分支(本地+远程):git branch -a

带*的分支为当前工作的分支

删除本地分支:

git branch -d branchnamne or git branch -D branchname 强制删除

删除远程分支:

Git push origin --delete branchname (删除远端分支branchname)

Git push origin :branchname (直接删除远端分支branchname)

获取远程仓库的分支(本地没有的分支)

git pull origin branch:branch:branch

实例:git pull origin branchname:branchname

git commit

git commit -m'' 只会提交已经git add过的文件(包括新增、修改、删除等所有修改操作)

git commit -a -m'' 会提交除新增未add的文件之外的所有修改操作

git diff

git diff 默认查看所有被修改过的文件(不包括新增未add的文件)

git diff filename (查看具体某个文件的修改内容, 显示本地文件修改的内容同版本库的差别)

Git diff branchone branchtwo 对比两个branch不同之处

Git diff tagone tagtwo 对比两个tag 不同之处

删除文件

在本地直接删除文件

1、rm file (工作区中文件删除)

2、git add file (文件删除的状态添加到暂存区中)

3、git commit (提交文件删除的状态到本地的版本库中)

以上三步可以缩减为两步:

1、git rm file (直接把删除的文件添加到暂存区中)

2、git commit (提交文件删除的状态到本地的版本库中)

查看当前工作区修改状态

git status; 要随时掌握工作区的状态, 使用git status命令 如果git status告诉你有文件被修改过,

查看log记录

git log 默认列出之前提交过记录(根据提交时间由近到远排列)

git log -n 列出指定提交次数的记录

git log --pretty=oneline 列出简单记录信息(commitid 和 提交注释)

git reflog -n 查看指定次数的提交操作的记录信息(commitid)

log and reflog 两者都是查看所有的commit操作的记录,log查看不到reset回退时跳过的commit操作的commitid (可以夸版本回退一次,进行实际演示)

git log

git reflog

git reset --hard commitid

撤消操作和回滚

1、有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 –amend 选项的提交命令尝试重新提交

$ git commit --amend

git checkout -- file 命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

2、提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:

$ git commit -m 'initial commit'

$ git add forgotten_file

$ git commit --amend

3、文件已经提交到了本地的版本库且未推向远端的版本库中:

git reset --hard HEAD~n or git reset --hard commitid(推荐)

4、文件已经从本地仓库推倒远程仓库的回退

git log or git reflog 找到目标版本

git reset --hard commiid

git push -f origin master (-f 参数是强制覆盖的意思,没有该参数会推送失败,因为远程仓库的版本高于当前版本)

git revert commitid

git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留

git reset 是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区

团队开发时,版本回退一定要通知其他人员!如果其他同事在每次提交前没有先更细后提交的意识或习惯的话,回退是白费功夫。

状态冻结

git stash 冻结当前修改状态

git stash list 列出总结列表

git stash pop 可以按版本恢复某个冻结状态并删除

git stash apply 只是按某个版本恢复某个冻结状态不删除

git stash drop 删除指定某个冻结状态

tag管理

创建tag:

git tag -a tagname -m添加tag的描述信息” (tag要有个规则标识例如:feature_abc_v1.1 ,给当前分支打一个tag名为tagname)

命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;

提交创建的tag: git push origin tagname (同提交分支操作一样)

命令git tag可以查看所有标签。 查看tag: git tag or git tag -l

查看标签的具体信息: git show tag-name

删除标签: Git tag -d tagname (本地删除)

Git push orign (空格):refs/tags/tagname (把删除的tag提交到远端)

删除标签实例: git tag -d v0.9 git push origin :refs/tags/v0.9

获取远程仓库的tag信息(本地没有) git fetch origin tag $tag

同远程仓库关联

查看当前代码关联的远程仓库信息

git remote 直接回车,列出所有关联的远程仓库

git remote -v 回车 列出每个远程仓库名及对应的仓库地址url

git remote add [shortname] [url]: 添加同一个远程仓库的关联关系

git remote remove shortname : 删除同一个远程仓库的关联关系

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

更多有关git命令的详细信息,请前往www.git-scm.com.cn/1511.html