git常用命令

1搭建简单git服务器

// 初始化git仓库
git init
// 拷贝仓库 如果初始化没有bare,拷贝的时候带bare参数即可.git init仓库,主分支不能够提交
git clone  ./.git --bare

1.1 提交代码三部曲

// 创建或者修改文件;调用git add指定提交的文件;调用git commit提交到本地分支
touch firstFile & git add firstFile & git commit -m "first commit"
// 如果没有配置config,需要配置
git config --global user.email www87538089@qq.com
git config --global user.name ming.xing
// 提交之前,记得执行git fetch或者git pull, git pull= get fetch&get merge
// 如果git pull 有冲突,无法执行可以通过git stash或者git add;git commit先提交
// git stash入栈 git stash list查看栈内容 git stash pop出栈 
// git stash apply $1应用指定内容
// 再执行git pull
// (通常不建议执行git pull, 通过git fetch或者git remote update获取最新代码,
// 通过git log origin/分支, 查看远程最新分支代码,再执行git checkout 远程分支
// 该操作不会产生merge点)
// 如果需要忽略untracked文件,需要修改.git/info/exclude文件
// 如果需要忽略tracked文件,需要执行git update-index --assume-unchanged命令
// 还原忽略文件执行git update-index --no-assume-unchanged
// 查看忽略文件执行 git ls-files -v | grep '^h'

1.2 本地和远程做key映射

// 需要在客户端执行ssh-keygen生成pubkey提供给服务器
liangemb@liangemb-OptiPlex-5040:/tmp/git/test/test$ cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHzt7THNGz3ixRvljltO7J8cKWNvj54rJ/QfL+U/vgzAvtNIhzgjxMQPWSOL1dzsTJuya7X8LL9vvu9M2dER+H/W60806+ATrBrOBfkiiMS66V6VXZzjaPaLZVGRvJeI47nJ70aHKIAC0e8uXpmKzq2x60/z19ZrSFbVdC7jZ78QndrIdj6IG+M1S7jhTXK3Qbs73r7fycWny8vma08c1CABB0gL8iH54iCBdf4FfOjSHtcoTXSGuLhtrBJXTCkn7O3B0wpUVolugQCEH2lgS8dG11f6WUn0nqDanZjzcxTY7OQHOfENoHTCW87twWFq98QV9pIU063omqRKaIdtF/ liangemb@liangemb-OptiPlex-5040
// 服务器端存放路径
git2cast@OptiPlex:~/git/test2$ cat ~/.ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHzt7THNGz3ixRvljltO7J8cKWNvj54rJ/QfL+U/vgzAvtNIhzgjxMQPWSOL1dzsTJuya7X8LL9vvu9M2dER+H/W60806+ATrBrOBfkiiMS66V6VXZzjaPaLZVGRvJeI47nJ70aHKIAC0e8uXpmKzq2x60/z19ZrSFbVdC7jZ78QndrIdj6IG+M1S7jhTXK3Qbs73r7fycWny8vma08c1CABB0gL8iH54iCBdf4FfOjSHtcoTXSGuLhtrBJXTCkn7O3B0wpUVolugQCEH2lgS8dG11f6WUn0nqDanZjzcxTY7OQHOfENoHTCW87twWFq98QV9pIU063omqRKaIdtF/ liangemb@liangemb-OptiPlex-5040
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk0tWBlCWd9DE0PMDYVsY8115Y84a+6IHN8V0yn4vGOx/sO7b2JMjdOh9ZZQTan8G1pczL4Zo38wGaYVueK8hRDyDrKFJYzbwy/J2ytlZK1XjXMBlRzK4JOaRR0ij8GQ1x46H/r7rFO7QqPHKlTM/jtv/YpD+2xcGdZATdV+3M3b4t2C/Y0wSoVN/QiUezJ1wO02PvnrnNnr+la+i84d3bHdcmu6RqQb68EvNvUzQjVbCQMbu8b90foNCtC+VqEu37RXqnbkJ4qVa+KpnKINZf/xXQsGnk0g2rAK7ytVdWuHqVNZNoZKZUam3AbxuyDs0YeaMpk9AtoqwP84HzEtFF selivert@selivert-OptiPlex-790
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsN4s5qDLlk76I5D2oobDP7zntCjSkhLjYRWi6RvPP+Toide0NB8C7FYMEqyD+OrItpf8rEcgktZ7uj1O/eka74yQdTqDNUYnM0TSb/Ul35RHHGSvYQ3hd60jHJkvAgLAWadVatSktz/V4kvG2grBBaEAbbzQYMuGAtQGGOWR9qbTiJLiNJgOVU+6b8/KSnChr6w0YEYCJLgDwjldbriYfRYTvab7fYpmcluULX6NdIB9mgDVCoQBeDlb21XdM6BNGU3Rh2vy5Y46miGbJ0nRToXE4Cwwj96dL8cRHN6EuKB8nJ/1u7KksH5q5W+PVivUpPuQPwgsKeTwLNIFqjTsv onekey@OptiPlex

2客户端操作

//服务器已经有了客户端的key,git clone不需要再次输入密码
git clone git@192.168.0.159:/home/git/code/test/
//可能会存在没有权限之类的,需要调用ssh-add,其他问题请百度
ssh-add ~/.ssh/id_rsa
//查看日志
git log
// 查看状态
git status

2.1代码分支提交

// 查看远程仓库名称, origin 为远程仓库的别名
onekey@OptiPlex:/media/truecrypt32/svn/Cast/git/test/test$ git remote -v
origin	git2cast@192.168.0.159:/home/git2cast/git/test (fetch)
origin	git2cast@192.168.0.159:/home/git2cast/git/test (push)
// 本地分支和远程分支名称可以不一样,如果远程没有相同的分支名称,则创建一个分支,如果远程和本地都有该 分支名称,则提交commit的patch
git push origin [分支名称]
// 如果远程和本地分支名称不相等.则提交commit日志(已经执行过代码提交三部曲).
git push origin [本地分支名称] [远程分支名称]

2.2 代码分支同步

// 查看分支
git branch
onekey@OptiPlex:/media/truecrypt32/svn/Cast/git/test/test$ git branch
  dev
* master
// 切换分支
git checkout dev
//在当前分支更新代码
git pull
//查看远程分支
git branch -r
//更新远程分支到本地
git pull origin v5(远程分支名)
//创建本地分支并映射到远程分支
git checkout -b localv5 origin/v5
//名称可以相同
git checkout -b v5 origin/v5

2.3 提交代码合并到其他分支

// 分支A和分支B,分支A提交代码3dbd40016550490c99bdd6df426fd060115166d5
onekey@OptiPlex:/media/truecrypt32/svn/Cast/git/test/test$ git log
commit 3dbd40016550490c99bdd6df426fd060115166d5
Author: wWX152939 <www87538089@qq.com>
Date:   Wed Jan 30 11:01:02 2019 +0800

    multi commit

commit 3033871296c71b406957f50a85408b95f9226a9b
Author: wWX152939 <www87538089@qq.com>
Date:   Wed Jan 30 10:50:36 2019 +0800

    v5 second push

commit c13af06b4611c8460013073dd4f7e00b95943859
Author: wWX152939 <www87538089@qq.com>
Date:   Wed Jan 30 10:33:06 2019 +0800

    v5 commit

commit 0ab75a6c33be68e887b4564e939863a171826be3
Author: zhiwei.wang <www87538089@qq.com>
Date:   Wed Jan 30 10:25:54 2019 +0800

    first commit
//要将3dbd40016550490c99bdd6df426fd060115166d5合并到分支B,切换到分支B,执行
git cherry-pick 3dbd40016550490c99bdd6df426fd060115166d5

3. 项目管理中的git应用

3.1分仓

通常复杂的项目(含有多个主线 版本)需要多个分支,但是项目中有很多代码是公用的,此时公用的部分需要单独建平台仓,而差异的部分建立差异仓,便于更好的维护代码。

3.2多个主线&多个开发分支

首先主线是用于发布版本的,开发代码不能在主线上修改。只有比较紧急的bug才可以临时修改在主线上。在一段代码开发完成后,需要将多个commit提交合并到多个主线上。通常使用rebase或者merge操作。

git checkout origin/dev  // 切换到dev开发分支上
git rebase -i origin/master  //将dev上的修改合并到master分支,并且进入编译模式。

git checkout origin/master  // 切换到master分支上
git merge --no-ff origin/dev  //将dev上的修改按照一笔合并到master分支。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值