Git 备忘

一.安装

linux1.redhat:yuminstallgit

2.ubuntu:apt-getinstallgit

windows下载http://msysgit.github.io/安装,一切默认

设置用户名及邮箱

gitconfig--global(local为仓库级)user.name"yourname"

gitconfig--globaluser.email"youremail@***.com"

二.关联github

获取ssh秘钥:ssh-keygen-trsa-C"youremail@***.com"

将当前用户目录下~/.ssh/id_rsa.pub(公钥)内容添加至github的sshkey(相当于防伪标识)

关联远端仓库:[email protected]:yourgithubName/yourRepo.git

查看仓库地址:gitremote-v

三.克隆、推送、同步

克隆:[email protected]:yourgithubName/yourRepo.git

推送:(gitpush<远程主机名><本地分支名>:<远程分支名>)gitpushoriginbranchname(一般为主分支master视开发情况而定)

同步:(gitpull<远程主机名><远程分支名>:<本地分支名>)gitpullorigin若出错提示无当前分支追踪信息,则gitbranch--set-upstream本地分支origin/远端分支使本地分支与远端关联

gitpulloriginmaster----allow-unrelated-histories

四.自己玩

创建分支:gitbranchbranchname

切换分支:gitcheckout(-b并创建)branchname

删除分支:gitbranch-dbranchname

合并分支:gitmergebranchname

查看分支:gitbranch

查看远程分支:gitbranch-r

查看所有分支:gitbranch-a

获取远程分支:gitcheckout-b本地分支名远程分支名

删除远程分支:gitbranch-r-dorigin/branch-name

添加文件:gitaddfilename(暂存区)

提交文件:gitcommit-m"yourcomment"

雪藏未提交修改:gitstash

查看雪藏:gitstashlist

回复雪藏:gitstashapply[stash@{1}]

删除雪藏:gitstashdrop[stash@{1}]

弹出雪藏:gitstashpop

查看状态:gitstatus

查看提交历史:gitlog(--graph图形)

比较差别(当前与repo):gitdifffilename

查看命令历史:gitreflog

退回到某一次提交:gitreset--hardcommitId(丢掉commitId后的提交内容)

gitreset--softcommitId(commitId后的提交内容退回工作区)

撤销工作区的修改:gitcheckout--filename

在提交代码(push-uoriginmaster)的过程中如果遇到“Permissiondenied(publickey,gssapi-keyex,gssapi-with-mic).”错误

Windows:

1.打开CMD

2.echo.hostgithub.lngtop.com>>%HOMEPATH%\.ssh\config

3.echo.hostnamegithub.lngtop.com>>%HOMEPATH%\.ssh\config

4.echo.port2222">>%HOMEPATH%\.ssh\config

Linux/MacOS:

1.echo-e"hostgithub.lngtop.com\nhostnamegithub.lngtop.com\nport2222">>~/.ssh/config

(github.lngtop.com换成自己在github上的repo地址)

五.

1.忽略部分文件(如编译后的class文件、settings等不必提交到远端的东东)

在代码目录下新建.ignore文件,内如如下

*.class//要忽略的文件后缀名*为通配符

*.classpath

*.project

pay/.settings///要忽略的路径

pay/WebRoot/WEB-INF/classes/

如果这些文件还没提交到远端,一切Ok。

若果已经提交了那么需要先gitrm(settings要先备份)再重新gitcommit,然后再gitpush提交到远端(再将备份还原)。以后git就不会再检查这些文件了

2.创建空分支

gitcheckout--orphanbranchname(新建分支没有commitlog,但内容俱全)

gitrm-rf.清空所有内容(此时branchname分支为空,执行commit后分支可见)

六.日常工作流程

1.gitcheckoutdevelop(若develop分支已存在)切换到日常开发分支

2.gitpullorigindevelop同步远程develop到本地develop分支

3.gitcheckout-bfeature1基于develop分支创建并切换到feature1分支

4.开始开发...完成后commit(可以有多个)

5.gitcheckoutdevelop切换到develop分支

6.gitpullorigindevelop再次同步远程develop到本地develop分支,因为有可能在自己进行开发时别人向远程提交了代码,这时要在提交前保持本地与远程同步

7.gitcheckoutfeature1再次切换到feature1分支

8.gitrebasedevelop

1)没有冲突:

gitpushoriginfeature1:develop将本地feature1分支推送至远程develop分支

2)有冲突:

修改冲突文件

gitadd.

gitrebase--continue继续rebase(gitrebase--abort取消rebase回到rebase开始前的状态)

gitpushoriginfeature1:develop将本地feature1分支推送至远程develop分支

七.fork别人的项目clone到本地后,远程分支有修改,需要同步远程分支,使得本地代码与远程分支一致。

1、gitremote-v:

orgin:为本地分支的

upstream:为远程分支

2、gitremoteaddupstream<原作者项目的URL>(上一步操作没有upstream,则需要添加uptream)

完成后,执行gitremote-v确认与上图一致。

3、gitfetchupstream将远程分支同步到本地

4、gitcheckoutmaster检查本地代码变更

5、gitmergeupstream/master合并分支

相关推荐