git实操常用命令汇总-小马哥
github在备案地执行git commit 后需要运行以下代码:
1、创建README.md
2、git add README.md
3、git commit -m '第一次提交'
4、git remote add origin https://github.com/mzq412304/caiAPP.git 指本地仓库和远程仓库建立连接
5、git push -u origin master
码云提交代码步骤:
git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并。
1、初始化 git init
2、 git remote add origin https://gitee.com/mzq412304/cae_app.git
3、拉取线上代码: git pull origin master
git pull <远程主机名> <远程分支名>:<本地分支名>
例如执行下面语句:
git pull origin master:brantest
将远程主机origin的master分支拉取过来,与本地的brantest分支合并。
后面的冒号可以省略:
git pull origin master
表示将远程origin主机的master分支拉取过来和本地的当前分支进行合并。
上面的pull操作用fetch表示为:
git fetch origin master:brantest
git merge brantest
相比起来git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。
4、提交代码
git add. 提交所有代码
5、git commit -m '说明'
6、第一次提交,:git push -u origin master 第二次提交就按照上面的写法即可
不在需要加 -u: git push origin master
说明:
git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相仿
$ git push <远程主机名> <本地分支名>:<远程分支名>
注意:这里的冒号:前后是必须没有空格的。
注意:
分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。
如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
$ git push origin master 上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
$ git push origin :master #等同于 $ git push origin --delete master
上面命令表示删除origin主机的master分支
如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
$ git push origin
上面命令表示,将当前分支推送到origin主机的对应分支。
如果当前分支只有一个追踪分支,那么主机名都可以省略。
$ git push
如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push
$ git push -u origin master
上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
二、常用命令
1、初始化:git init 创建一个git仓库,创建之后就会在当前目录生成一个.git的文件
2、添加文件:git add filename 把文件添加到缓冲区
3、添加所有文件到缓冲区 git add .或者 git add --all(从目前掌握的水平看,和后面加“.”的区别在于,加all可以添加被手动删除的文件,而加“.”不行):
4、删除文件 git rm filename
提交:提交缓冲区的所有修改到仓库(注意:如果修改了文件但是没有add到缓冲区,也是不会被提交的)
5、git commit -m "提交的说明"
6、commit可以一次提交缓冲区的所有文件
查看git库的状态,未提交的文件,分为两种,add过已经在缓冲区的,未add过的
7、查看状态 git status
8、查看日志 git log
9、版本回退:git reset 可以将当前仓库回退到历史的某个版本
10、git reset --hard HEAD^ 第一种用法:回退到上一个版本(HEAD代表当前版本,有一个^代表上一个版本,以此类推)
git reset --hard d7b5 第二种用法:回退到指定版本(其中d7b5是想回退的指定版本号的前几位)
11、查看命令历史:git reflog 查看仓库的操作历史
12、查看提交版本 git log
1) git config --global user.name 'mzq304' // 查看git用户名
2) git config --global user.email '8278@qq.com' // 查看git邮箱
3) git log --oneline // 查看所有提交的版本号
13、git reflog // 查看每次操作对应的commitId账号
git reset --hard commitId // 本地端口回滚指定的版本
git push -f // 强制推送到远程分支
14、回滚版本
1) git reset --hard HEAD^,回滚到上个版本
2) git reset --hard HEAD^~2,回滚到前两个版本
3) git reset --hard xxx(版本号或版本号前几位),回滚到指定版本号,如果是版本号前几位,git会自动寻找匹配的版本号
4) git reset --hard xxx(版本号或版本号前几位) filename,回滚某个文件到指定版本号(需要进入该文件所在目录)
5) git reset --hard 希哈值
三、git分支管理
1、查看分支的情况,git branch 前面带*号的就是当前分支
2、创建分支 git branch 分支名
3、切换当前分支到指定分支: git checkout 分支名
4、创建分支并切换到创建的分支 git checkout -b 分支名
5、合并某分支的内容到当前分支 git merge 分支名
6、删除分支 git branch -d 分支名
注意:
如果两个分支同时进行了同一个文件的修改和提交,在merge时就会产生冲突,首先要手动打开文件解决冲突,再提交,就相当于进行了merge
两个分支分别进行了commit,最新的一次提交将两个分支内容进行了合并
7、查看分支合并图 git log --graph
8、新建标签 git tag 标签名 版本号 默认为最新版本,后面加上版本号参数则可指定版本增加标签
9、查看所有标签 git tag
10、查看标签的详细信息 git show 标签名
11、将tag提交到远端仓库 推送所有tag: git push origin --tags
12、推送某个tag:git push origin v1.0
13、将本地仓库内容推送到远端仓库 git push -u origin master (-u 表示第一次推送master分支的所有内容,后面再推送就不需要-u了),
跟commit的区别在于一个是提交到本地仓库,一个是提交到远程仓库
14、从远端库更新内容到本地(相当于svn的update) git pull
注意:tips:如果push的时候,本地和文件和远端文件有冲突,就要先pull、然后手动解决冲突,才能继续push
15、git记住用户名密码
push的时候默认每次都需输入GitHub的用户名和密码,在git仓库根目录下.git文件夹的config文件末尾增加如下内容,
即可记住用户名密码,无需每次推送都输入了 [credential] helper = store
注意:
提交到git时,忽略部分IDE产生的文件,在根目录下创建.gitignore文件, 注意:新加.gitignore只能忽略那些原来没有被提交过的文件,如果某些文件已经被纳入了版本管理中,
则修改.gitignore是无效的。解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
四、
1、git clone 之后才想要提交代码怎么办?
主要的问题来自于git remote的地址问题,那么我们要做的首先应该是将本地与当前远程remote切断联系。然后需要添加一个新的远程仓库,这个新的仓库从何而来呢?就需要我们对原仓库进行fork了,之后就是使用刚刚文章中提到的添加远程的方法。
第一步: 与当前远程remote切断。 git remote remove origin 取消本地目录下关联的远程库
第二步: 对原仓库进行fork,添加远程 git remote add origin git@github.com:mzq412304/shequn.git https://gitee.com/mzq304/shequn.git
第三步: git push origin master
后面按照之前的方法上传提交代码即可。
说明:
在clone代码库到本地的时候,采用SSH加密的方式的话,在git push的时候是无须输入远程仓库的github账户密码的,SSH的写法就像下面这样:
git@github.com:git_username/repository_name.git 到了git push的时候,自然还是需要我们老老实实输入账号密码的
2、使用Git下载指定分支命令为:git clone -b 分支名仓库地址
如: 使用Git下载v.2.8.1分支代码,使用命令:git clone -b v2.8.1 https://git.oschina.net/oschina/android-app.git
解释命令:-b表示要从分支下载,v2.8.1就是具体的某个分支的名称,https://git.oschina.net/oschina/android-app.git这是app源码的git仓库地址
报错集:
1、The file will have its original line endings in your working directory
原因:是在windows下生成的所以换行和 linux 确实不同可能是因为这个导致的
解决方法:git config --global core.autocrlf false
2、 refusing to merge unrelated histories
原因:最主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库。假如我之前是直接clone的方式在本地建立起远程github仓库的克隆本地仓库就不会有这问题了。
解决方法:
3、Your local changes to the following files would be overwritten by merge
原因:
解决方法:
1) 服务器代码合并本地代码
$ git stash //暂存当前正在进行的工作。
$ git pull origin master //拉取服务器的代码
$ git stash pop //合并暂存的代码
2) 服务器代码覆盖本地代码
$ git reset --hard //回滚到上一个版本
$ git pull origin master
4、 RPC failed; HTTP 413 curl 22 The requested URL returned error
解决方法:git config http.postBuffer 524288000