Ubuntu系统下Git的使用

-----------------------------------------------------Git安装---------------------------------------------------

可以输入git,看看系统有没有安装Git,没有安装会提示,如下:

Theprogram 'git' is currently not installed. You can install it bytyping:

sudoapt-get install git



安装Gitsudoapt-get install git


安装Git之后需要配置用户信息:

gitconfig --global user.name "Your Name"

gitconfig --global user.email "you@example.com"



---------------------------------------------------SSH密钥注册---------------------------------------------

官网生成密钥命令:ssh-keygen-t rsa -C "$your_email"


第一步生成密钥:

ssh-keygen-t rsa -C "shijinwen@ltbl.cn"


说明:如果一切顺利的话,可以在用户主目录(/home/yourhost name/)里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSHKey的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥


第二步找到id_rsa.pub文件,将文件内容复制到githubssh管理中(新建SSH密钥)

catid_rsa.pub /gedit id_rsa.pub



--------------------------------------------Git克隆项目----------------------------------------------


克隆项目:

gitclone git@192.168.100.22:Romaker/Romaker-Admin.git


克隆项目某个分支:

gitclone -b 分支名称git@192.168.100.22:Romaker/Romaker-Admin.git


//第一步:gitclone 项目地址 //克隆项目

//第二步:cd进入下载目录 //如果项目不位于主分支,则必须进入下载目录然后切换分支下载

//第三步:gitcheckout --track origin/dev //切换分支,检出分支内容

-----------------------------------------------Git更新项目---------------------------------------------------


1.git pull //更新代码



-----------------------------------------------Git提交代码---------------------------------------------------


第一步,用命令gitaddgitrm把文件添加到仓库:

gitadd 文件名称(或文件目录)[添加修改] gitrm 文件名(或文件目录)[删除]

提交当前目录下所有文件:gitadd ./


第二步,用命令gitcommit把文件提交到仓库:

gitcommit -m "注释内容"


第三步,用命令gitpush 把文件推送到git服务器:

gitpush -u origin sjw(分支名称)


说明:提交新增跟提交修改是同样的步骤



------------------------------------------------Git关联远程库----------------------------------------------


要关联一个远程库,使用命令gitremote add origin git@server-name:path/repo-name.git


关联后,使用命令gitpush -u origin master第一次推送master分支的所有内容;


此后,每次本地提交后,只要有必要,就可以使用命令gitpush origin master推送最新修改;

----------------------------------------------------Git分支管理-----------------------------------------------


创建并切换到dev分支:gitcheckout -b dev

说明:gitcheckout命令加上-b参数表示创建并切换,相当于以下两条命令:

gitbranch dev //创建

gitcheckout dev //切换


查看当前分支:gitbranch //gitbranch命令会列出所有分支,当前分支前面会标一个*


合并分支:gitmerge dev


删除分支:gitbranch -d dev


查看分支合并图:gitlog --graph


查看分支:gitbranch

创建分支:gitbranch <name>

切换分支:gitcheckout <name>

创建+切换分支:gitcheckout -b <name>

合并某分支到当前分支:gitmerge <name>

删除分支:gitbranch -d <name>



-------------------------------------------------GitBug分支--------------------------------------------


软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。


当你接到一个修复一个代号101bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交:


$git status

#On branch dev

#Changes to be committed:

# (use "git reset HEAD <file>..." to unstage)

#

# new file: hello.py

#

#Changes not staged for commit:

# (use "git add <file>..." to update what will becommitted)

# (use "git checkout -- <file>..." to discard changesin working directory)

#

# modified: readme.txt

#

并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?


幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:


$git stash

Savedworking directory and index state WIP on dev: 6224937 add merge

HEADis now at 6224937 add merge

现在,用gitstatus查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心地创建分支来修复bug


首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:


$git checkout master

Switchedto branch 'master'

Yourbranch is ahead of 'origin/master' by 6 commits.

$git checkout -b issue-101

Switchedto a new branch 'issue-101'

现在修复bug,需要把“Gitis free software ...”改为“Gitis a free software ...”,然后提交:


$git add readme.txt

$git commit -m "fix bug 101"

[issue-101cc17032] fix bug 101

1file changed, 1 insertion(+), 1 deletion(-)

修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:


$git checkout master

Switchedto branch 'master'

Yourbranch is ahead of 'origin/master' by 2 commits.

$git merge --no-ff -m "merged bug fix 101" issue-101

Mergemade by the 'recursive' strategy.

readme.txt| 2 +-

1file changed, 1 insertion(+), 1 deletion(-)

$gitbranch -d issue-101

Deletedbranch issue-101 (was cc17032).

太棒了,原计划两个小时的bug修复只花了5分钟!现在,是时候接着回到dev分支干活了!


$git checkout dev

Switchedto branch 'dev'

$git status

#On branch dev

nothingto commit (working directory clean)

工作区是干净的,刚才的工作现场存到哪去了?用gitstash list命令看看:


$gitstash list

stash@{0}:WIP on dev: 6224937 add merge

工作现场还在,Gitstash内容存在某个地方了,但是需要恢复一下,有两个办法:


一是用gitstash apply恢复,但是恢复后,stash内容并不删除,你需要用gitstash drop来删除;


另一种方式是用gitstash pop,恢复的同时把stash内容也删了:


$git stash pop

#On branch dev

#Changes to be committed:

# (use "git reset HEAD <file>..." to unstage)

#

# new file: hello.py

#

#Changes not staged for commit:

# (use "git add <file>..." to update what will becommitted)

# (use "git checkout -- <file>..." to discard changesin working directory)

#

# modified: readme.txt

#

Droppedrefs/stash@{0} (f624f8e5f082f2df2bed8a4e09c12fd2943bdd40)

再用gitstash list查看,就看不到任何stash内容了:


$git stash list

你可以多次stash,恢复的时候,先用gitstash list查看,然后恢复指定的stash,用命令:


$gitstash apply stash@{0}



-------------------------------------------------Git常用命令汇总--------------------------------------------


查看当前项目的分支信息:gitremote show origin


声明分支:gitbranchsjw(分支名) //项目有多个分支存在的情况,可以声明分支,然后切换分支就可以用gitstatus 对比本地代码文件改动了


切换分支:gitcheckoutsjw(分支名)


查看文件状态:gitstatus

查看文件修改内容:gitdiff文件名


查看提交日志:gitlog --pretty=oneline 显示从近到远的提交日志列表


回退到某个版本:gitreset --hard HEAD^ HEAD~100意思是往上回滚100个版本

gitreset --hard版本id 回滚到指定版本


查看命令历史:gitreflog


查看工作区和版本库里面最新版本的区别:gitdiff HEAD -- readme.txt


丢弃工作区文件修改:gitcheckout -- file(文件名)

说明:命令gitcheckout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是:readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是:readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次gitcommitgitadd时的状态。


丢弃暂存区的修改,重新放回工作区:gitreset HEAD file


总结:gitcheckout -- file其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。


从版本库删除文件:gitrm file


//1. git add . //往暂存区域添加已添加和修改的文件,不处理删除的文件

//2. git status //比较本地数据目录与暂存区域的变化

//3. git commit -m "commit directions" //提到代码到本地数据目录,并添加提交说明

------------------------------------------------Ubuntu常用命令---------------------------------------------

查询系统历史命令信息:history

创建目录:mkdir

删除空目录:rmdir

删除非空目录:rm-rf 目录or文件

创建文件:touch文件

查看文件:cat

编辑文件:gedit

查看文件列表:ls-la

查看当前工作目录:pwd



----------------------------------创建版本库------------------------------------

Git全局设置

gitconfig --global user.name "石锦文"

gitconfig --global user.email "shijinwen@ltbl.cn"


创建新版本库

mkdirphpTest

cdphpTest

gitinit

touchREADME.md

gitadd README.md

gitcommit -m "first commit"

gitremote add origin git@192.168.100.22:jinwenShi/phpTest.git

gitpush -u origin master


推送已存在的Git仓库

cdexisting_git_repo

gitremote add origin git@192.168.100.22:jinwenShi/phpTest.git

gitpush -u origin master


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值