Git学习(二):Git基本使用
目录
Git使用
1. 远程仓库
检出仓库:
git clone git://github.com/jquery/jquery.git
查看远程仓库
git remote -v //查看当前项目中都添加了哪些远程仓库
备注:origin一般是自己在服务器上的远程仓库,其他的为他人的远程仓库。
添加一个新的远程仓库
git remote add [shortname] [url]
查看远程仓库信息
git remote show [remote-name]
远程仓库的删除和重命名
git remote rename [old name] [new name]
git remote rm [remote-name]
推送数据到远程仓库
git push [remote-name] [local-branch-name]: [remote-branch-name]
2. 分支
查看分支
git branch //本地分支
git branch –r //远程分支
git branch -a //本地和远程
新建分支
git branch [branch-name] //创建本地分支[branch-name],在当前分支基础上
git push origin [branch-name] //把分支推到远程分支,远程不存在的话会创建
切换分支
git checkout [branch-name]
git checkout -b [branch-name] //创建并切换分支
git checkout -b 本地分支名 origin/远程分支名 //创建一个新的本地分支,并与指定的远程分支关联起来。
备注:M 表示原来分支(上一次修改没有提交)带过来的修改
删除分支
git branch -d [branch-name] //删除本地分支
git push origin --delete [branch-name] //删除远程分支
设置跟踪分支
git branch --set-upstream-to=A/branch1 local1 // upstream是分支间的流通道。
从master合并分支
git merge origin/master
3. 设置
git config --global push.default simple //simple模式的解释见2.9
git config --global pull.default simple
避免输入用户名和密码
git config --global credential.helper store
Alias
git config --global alias.unstage 'reset HEAD’
获取帮助
git help/ man git [op]
git status 查看工作区代码相对于暂存区的差别
4. 抓取信息git pull
抓取远程仓库的信息
git fetch <远程库名> <远程分支名>
备注:此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)。fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。
远程仓库抓取信息并合并
git pull <远程库名> <远程分支名>:<本地分支名>
比如,取回远程库中的online分支,与本地的online分支进行merge,要写成:
git pull origin online:online
如果是要与本地当前分支merge,则冒号后面的<本地分支名>可以不写
git pull origin online
通常,git会将本地库分支与远程分支之间建立一种追踪关系。比如,在git clone的时候,所有本地分支默认与远程库的同名分支建立追踪关系。也就是说,本地的master分支自动追踪origin/master分支。因此,如果当前处于本地online分支上,并且本地online分支与远程的online分支有追踪关系,那么远程的分支名可以省略:
git pull origin
其实,git pull 命令等同于先做了git fetch ,再做了git merge。可见2.9
5. git add和git commit
git add [参数] <路径>
作用就是将我们需要提交的代码从工作区添加到暂存区,就是告诉git系统,我们要提交哪些文件,之后就可以使用git commit命令进行提交了。 为了方便下面都用.来标识路径,.表示当前目录,路径可以修改,下列操作的作用范围都在版本库之内。
git add .
不加参数默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区,注意不包括删除。
git add -u .
-u 表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件,注意这些被删除的文件被加入到暂存区再被提交并推送到服务器的版本库之后这个文件就会从git系统中消失了。
git add -A .
-A 表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。
如何你想从资源库中删除文件,我们使用rm。
git rm file
git commit 主要是将暂存区里的改动给提交到本地的版本库。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,commit-id 在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里。
git commit -m ‘message’
-m参数表示可以直接输入后面的“message”,如果不加 -m参数,那么是不能直接输入message的,而是会调用一个编辑器一般是vim来让你输入这个message, message即是我们用来简要说明这次提交的语句。
git commit -am ‘message’ //-am等同于-a -m
-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区, 注意: 新加的文件(即没有被git系统管理的文件)是不能被提交到本地仓库的。-a不会造成新文件被提交,只能修改。
6. git push
git push <远程主机名> <本地分支名>:<远程分支名> //:前后没有空格
git push命令用于将本地分支的更新,推送到远程主机。分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。
如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。下面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
git push origin master
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。下面命令表示删除origin主机的master分支。
git push origin :master //等同于git push origin --delete master
如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。下面命令表示,将当前分支推送到origin主机的对应分支。
git push origin
如果当前分支只有一个追踪分支,那么主机名都可以省略。
git push
如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。下面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
git push -u origin master
只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回。你必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。
7. 提交文件
git add
git commit –m //尽量不要git commit –a,会带上所有的文件
git push
撤销 commit: git reset –soft HEAD~1 //按提交撤销
撤销缓存文件:git reset
撤销工作区修改:git checkout
更新文件:git pull
冲突解决:
对齐对方:git checkout --theirs git add git commit
以我的为准 git checkout --ours git add git commit
手动解决冲突
补充:git status 查看工作区代码相对于暂存区的差别
8. 开发流程
开发流程:
- git checkout [特定分支]
- coding
- 本地编译通过
- 选择文件commit到本地repo(最好一个提交是一个完整的特性实现)
- push到远程repo
9. git stash
https://blog.****.net/anhenzhufeng/article/details/78052418
10. tag和submodule操作相关
3)版本(tag)操作相关命令
查看版本:$ git tag
创建版本:$ git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]
4) 子模块(submodule)相关操作命令
添加子模块:$ git submodule add [url] [path]
如:$ git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
初始化子模块:$ git submodule init ----只在首次检出仓库时运行一次就行
更新子模块:$ git submodule update ----每次更新或切换分支后都需要运行一下
删除子模块:(分4步走哦)
1)$ git rm --cached [path]
2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉
3) 编辑“.git/config”文件,将子模块的相关配置节点删除掉
4) 手动删除子模块残留的目录
还可以参考文档:https://www.runoob.com/manual/github-git-cheat-sheet.pdf