git基础入门之常用命令操作
本内容参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
初学,有什么不对的地方 ,欢迎指出
一、工作区(本地仓库)
1、创建仓库(repository):git init
用法:在文件夹(变成仓库的文件夹)目录下执行 git init
2、添加文件:git add [文件路径]
如:
提交文件:git add test.txt
提交文件夹:git add test
提交任意文件: git add *
提交当前目录所有文件: git add .
添加所有文件,同时将已删除文件从仓库中删除:git add -u
3、删除文件:
1)rm [文件路径] 或直接在文件管理器把文件删除
1)rm [文件路径] 或直接在文件管理器把文件删除
如:rm text.txt
注:恢复文件 git checkout rext.txt
2)删除并删除仓库中的版本
git rm [文件路径]
注:
1))恢复文件:git rest HEAD [文件路径]
2))git checkout [文件路径]
4、回退版本:git rest hard commit_id
如:git rest --hard 12345
git reset
命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD
时,表示最新的版本。用命令
git reset HEAD file
可以把暂存区的修改撤销掉(unstage),重新放回工作区5、获取最的提交信息:git log
注:可根据返回的日志的id回退版本
如:git rest --hard 12345
6、查看命令历史:git reflog
7、获取仓库状态信息(增、删、改文件相关信息):git status
8、撤销修改(丢弃工作区的修改)git checkout -- [文件]
注:git checkout -- file
命令中的--
很重要,没有--
,就变成了“创建一个新分支”的命令二、远程仓库
1、创建SSH Key
1)在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有
id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key,密码是可选项,输入如下命令:ssh-keygen -t rsa -C "youremail@example.com"
最后将你的公钥交给git管理人
2、关联远程版本库
仓库下运行命令:git remote add origin [git地址]
如:git remote add origin git@github.com:michaelliao/learngit.git
3、本地库的内容推送到远程:git push -u origin [文件]
如:
git push -u origin master
-u:由于远程库是空的,第一次推送
master
分支时,会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,关联后,推送到远程可以把加-u参数
4、克隆远程库到本地:git clone [git地址]
如:git clone git@github.com:michaelliao/gitskills.git
Git支持多种协议,包括
https
,但通过ssh
支持的原生git
协议速度最快。5、分支(branch)
1)创建分支:git branch [分支名]
如:git branch dev
2)切换分支:git checkout [分支名]
如:git checkout dev
3)创建并切换分支 : git checkout -b [分支名]
如:git check -b dev
实际上是执行了1) 和2)两条命令
4)查看分支:git branch
注:git branch命令会列出所有分支,当前分支前面会标一个*号
5) 合并分支到当前分支:git merge [分支名]
如:git merge dev
6)删除分支:git branch -d [分支名]
如:git branch -d dev
7)删除远程分支:
git branch -d [分支名] //先删除本地分支
git push origin :[分支名] //再推上服务器
6、解决冲突
<<<<<<< HEAD(HEAD指向当前分支末梢的提交。)
Creating a new branch is quick & simple.(当前分支中的内容。)
=======
Creating a new branch is quick AND simple.(merge过来的另一条分支上的代码。)
>>>>>>> feature1(分支的名字)
7、分支管理策略
1)Fast forward模式(默认):这种模式下,删除分支后,会丢掉分支信息,合并就看不出来曾经做过合并。
2)普通模式(--no-ff参数):普通模式合并,合并后的历史有分支,能看出来曾经做过合并。
如:git merge --no-ff dev (使用普通模式)
8、储存/恢复工作区
1)储存:git stash
2)恢复:
2-1)查看储存信息:git stash list
2-2)恢复:
2-2-1)git stash apply:恢复后,stash内容并不删除,需要用git stash drop来删除;
2-2-2)git stash pop:恢复的同时把stash内容也删了:
用法:git stash apply [stash_id]/git stash pop [stash_id]
如:git stash apply stash@{0}
9、丢弃一个没有被合并过的分支(强行删除):git branch -D [分支名]
如:git branch -D dev
注:没有合并过的分支,需求强行删除才可以删除
10、查看远程库信息: git remote
-v:查看详情信息
注:没有推送权限,就看不到push的地址
11、推送分支:git push origin [分支名]
12、拉取分支:git pull origin [分支名]
13、建立本地分支和远程分支的关联:git branch --set-upstream [工作区分支名] origin/[服务器分支名]
如:git branch --set-upstream dev origin/dev
14、忽略文件
在Git工作区的根目录下创建一个特殊的
.gitignore
文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。将忽略文件添加版本控制也可以使用命令:git add [文件] -f
15、忽略已跟踪的文件
git update-index --assume-unchange [文件名]