Git命令使用总结

  1. 云栖社区>
  2. 博客>
  3. 正文

Git命令使用总结

黑夜路口 2018-04-16 14:05:00 浏览451
展开阅读全文
1.在GitHub上创建了一个新项目,如何将本地的一个工程上传上去
1) copy github项目地址
2) 在android studio中打开terminal命令行,执行命令将本项目所有代码添加
git add *
3)执行命令提交
git commit -m "描述信息" 
4)执行命令将本地代码和远端路径绑定
git remote add origin https://github.com/renzhenming/ArRemote.git
5)执行命令提交代码
git push origin master
2.创建分支
git branch [branch name]
3.从git地址clone
git clone git@github.com:FBing/design-patterns.git     git@github.com:FBing/design-patterns.git是项目地址
4.查看当前所在分支
git branch 比如当前在master分支,那么会显示*master
5.查看远程分支
git branch -r
6.查看所有分支,包括本地和远程
git branch -a
7.切换到另一分支
git checkout [branch name]
8.创建分支的同时切换到该分支上
git checkout -b [branch name]

这一命令的效果相当于以下两步操作:
git branch [branch name]
git checkout [branch name]
9.将新分支推送到github
git push origin [branch name]
10.删除本地分支
git branch -d [branch name]
11.删除github远程分支
git push origin :[branch name] (冒号需要紧挨着分支名,不能有空格)
12.git将代码提交到远程分支非主分支

一个仓库可以包含多个分支,有一个默认的主分支:master
若想提交代码至远程仓库的某个分支(非主分支)
先查看下本地分支以及远程分支:git branch -a

img_ced854105cba3eec09ed50b0d6597eff.png
image

由本地分支(非主分支master)提交至远程分支,新建一个本地分支,并切换到此分支:Git branch-b temp
img_0dd2e5e3f7cb8c34751fa194ab11b7f0.png
image

如果已有本地分支可直接切换:git checkout [name]
img_e9a8c319d5493860922425a3bb981936.png
image

接下来三步走:

git add .
git commit -a -m 'xxxxx' //这里的-m后边是提交代码的描述信息

git push origin sunmaoyu //git push origin master的意思就是上传本地当前分支代码到master分支。git push是上传本地所有分支代码到远程对应的分支上。
img_9de04fd5f2dfe80beb067b212a2f5204.png
image
img_421ff3340fdcdab4cdc63e11161a1055.png
image
img_b8ea0ffe44703eeafaa766482e6290df.png
image

· git add -A 提交所有变化
· git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
· git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

13. git add .之后,取消add状态
git reset HEAD <file> file为完整路径
可以通过git status 获取到
14.修改代码后如何尚未add的时候取消所有的修改
git checkout -- <file>
file为完整路径
可以通过git status 获取到
15.合并分支代码
1、进入要合并的分支(如开发分支合并到master,则进入master目录)
git pull
2、查看所有分支是否都pull下来了
git branch -a
3、使用merge合并开发分支
git merge 分支名
4、查看合并之后的状态
git status 
5、有冲突的话,通过IDE解决冲突;(没有冲突的文件已经是commit状态了)
6、解决冲突之后,将冲突文件提交暂存区
git add 冲突文件
7、提交merge之后的结果
git commit 
如果不是使用git commit -m "备注" ,那么git会自动将合并的结果作为备注,提交本地仓库;
8、本地仓库代码提交远程仓库(没有冲突,merge之后直接push)
git push
git将分支合并到分支,将master合并到分支的操作步骤是一样的;
16.查看远程服务器地址
git remote -v
17.列出当前仓库的所有tag
git tag
18.创建tag,附注tag(v1.2是tag名称,-m后是注释信息)
git tag v1.2 -m "1.2版本的tag"
19.切换到某一个tag(例如:git checkout v1.2)
git checkout [tagname]
20.查看标签信息(可以看到-m后的注释信息)
git show v1.2
21.删除标签(打错标签需要修改的时候,需要先删除,再重新打新的)
git tag -d v1.2
22.提交本地tag到git服务器(通常的git push不会将标签对象提交到git服务器,需要进行显式的操作)
git push origin v1.2
23.提交所有本地标签到git服务器
git push origin --tags
24.在最后一次commit上 打标签
git tag -a "v0.2" c98c186ebb381005b495f6f1f2a65dc72195ad9d -m 'v0.2'
23.提交所有本地标签到git服务器
git push origin --tags
24.本地创建新分支后上传到服务器同时创建服务器新分支
1.git branch 新分支名                创建本地新分支
2.git checkout 新分支名            切换到这个新创建的分支上,此时,原来的代码都在这个新分支上
3.git push origin 新分支名:服务器分支名(新创建的原来不存在的)        这样就把代码上传到了服务器上一个新的分支中
25.类似操作git log 之后如何退出状态的方法

git log 进入了这种状态

。。。
Date:   Thu Aug 10 11:18:48 2017 +0800

    testfight 3105
:

苹果电脑按W Q键可退出

使用中发生的一些问题
Can't update: no tracked branch

服务器创建了新分支,本地创建并checkout之后更新代码,提示如下,表明没有建立连接,所以只需要按提示输入命令

git branch --set-upstream v4.2 origin/v4.2

可能会提示

 The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-toBranch v4.2 set up to track remote branch v4.2 from origin.

不用管它,已经可以更新代码了

异常:Can't update: no tracked branch
        No tracked branch configured for branch v4.2.
To make 
        your branch track a remote branch call, for example,
git 
        branch --set-upstream v4.2 origin/v4.2
Git(some untracked working tree files would be overwritten by merge ,Please move or remove them before you can merge. Aborting)
发生这一问题时如果需要被move的文件是android studio自动生成的,这时不能直接在android studio里删除文件,因为你删除后会再次生成,pull或者update的结果是仍有这一错误解决的办法是关闭android studio 进入需要被删除的文件夹中将文件删掉,然后直接在命令行中git pull ,这样就
可以把文件pull下来注意在pull之前不可以打开android studio,防止再次自动生成
26.撤销commit soft reset 和 hard reset

commit到本地后,如过需要撤销这次commit可以这样执行
先使用git log 查看 commit日志

    commit 422bc088a7d6c5429f1d0760d008d86c505f4abe  
    Author: zhyq0826 <zhyq0826@gmail.com>  
    Date:   Tue Sep 4 18:19:23 2012 +0800  
      
        删除最近搜索数目限制  
      
    commit 8da0fd772c3acabd6e21e85287bdcfcfe8e74c85  
    Merge: 461ac36 0283074  
    Author: zhyq0826 <zhyq0826@gmail.com>  
    Date:   Tue Sep 4 18:16:09 2012 +0800  

找到需要回退的那次commit的 哈希值,

git reset --hard commit_id 

这样操作的结果是提交到本地的代码会消失,同样工程中的代码也会撤销,相当于完全回到了上一个节点
如果仅仅想去掉本地提交而不影响工程中的代码,可以这样

git reset --soft commit_id 

两者的区别如下
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

27.撤销push到远端的代码

在使用git时,push到远端后发现commit了多余的文件,或者希望能够回退到以前的版本。
先在本地回退到相应的版本:

git reset --hard <版本号>
// 注意使用 --hard 参数会抛弃当前工作区的修改
// 使用 --soft 参数的话会回退到之前的版本,但是保留当前工作区的修改,可以重新提交

如果此时使用命令:

git push origin <分支名>

会提示本地的版本落后于远端的版本


img_26bc7983a9388a0bb598a89ea0c60388.png
image

为了覆盖掉远端的版本信息,使远端的仓库也回退到相应的版本,需要加上参数--force

git push origin <分支名> --force
28.命令合并分支代码

合并步骤:
1、进入要合并的分支(如开发分支合并到master,则进入master目录)
git pull
2、查看所有分支是否都pull下来了
git branch -a
3、使用merge合并开发分支
git merge 分支名
4、查看合并之后的状态
git status
5、有冲突的话,通过IDE解决冲突;(没有冲突的文件已经是commit状态了)
6、解决冲突之后,将冲突文件提交暂存区
git add 冲突文件
7、提交merge之后的结果
git commit
如果不是使用git commit -m "备注" ,那么git会自动将合并的结果作为备注,提交本地仓库;
8、本地仓库代码提交远程仓库(没有冲突,merge之后直接push)
git push
git将分支合并到分支,将master合并到分支的操作步骤是一样的;

29. Android Studio 项目取消 GitHub关联

有时候和github关联的时候,我们执行了git remote add origin http://xxxx将本地仓库和远程地址关联了起来,但是发现这个地址不是我们想要的地址,这个时候再重新git remote add origin http://yyyy,会提示

fatal: remote origin already exists.

正确的操作步骤应该是
1、先删除远程 Git 仓库
git remote rm origin
2、再添加远程 Git 仓库
git remote add origin http://xxxx

30.git stash命令

本地做了修改之后,如果又突然需要update代码,但是由于本地的修改并不完整,你还不想commit,这时可以使用stash命令,这个命令会先将你的修改保存,执行之后本地代码会恢复到上一次commit的状态

git stash

然后update服务器代码,更新完成之后执行再执行stash恢复刚刚保存的代码

git stash pop

此时你会发现,原本你在本地修改的代码已经又恢复了,并且也已经完成了和服务器的同步

31.git push origin与git push -u origin master的区别

$ git push origin

上面命令表示,将当前分支推送到origin主机的对应分支。 

如果当前分支只有一个追踪分支,那么主机名都可以省略。 

$ git push 如果当前分支与多个主机存在追踪关系,那么这个时候-u选项
会指定一个默认主机,这样后面就可以不加任何参数使用git push。

$ git push -u origin master 上面命令将本地的master分支推送到origin主
机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此
外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。
Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方
式。

网友评论

登录后评论
0/500
评论
黑夜路口
+ 关注