Git使用笔记

一、git的基础安装配置

1. 安装:sudo apt-get install git

2. 配置:

git config --global  user.email "email@example.com"    //email@example.com最后是自己的github账号绑定的email

 

git config --global  user. name   "account"           //account为github账户名称  

3.如果要用SSH协议访问github,需要配置SSH-Key.                                                                                                                        1)生成SSH Key  

ssh-keygen -t rsa -b 4096 -C "email@example.com" //email@example.com github账户所用邮箱

2)接下来按提示输入 

...

成功了的话,会在~/.ssh生成明文和密文等文件,如:id_rsa、id_rsa.pub等

3) SSH Key 加入到ssh agent中:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

4)配置github账户中的SSH Key:

id_rsa.pub中的内容复制到到gihub的SSH Key设置处创建的SSH Key 中。

二、完成fork分支与主分支的同步

         背景:自己已经拥有了一个github账号,然后通过fork从主分支拉出了一个自己项目分支。由于主分支上也会在不断的有更新,因此我们自己的分支及时与主分支保持同步,同时我自己的修改 也需要提交到主分支中。以我们使用Apollo 开源项目为基础进行自己的工作为例子:

         apollo主分支:https://github.com/ApolloAuto/apollo.git  或 git@github.com:ApolloAuto/apollo.git

         fork出来的自己分支:https://github.com/mfyanga/apollo.git或git@github.com:mfyanga/apollo.git

1.在我的工作目录clone一份我的分支                                                                                                                                                                       

git clone  https://github.com/mfyanga/apollo.git                                                                                                                                       

2.与主分支保持同步

 1)在工作目录配置一个upstream绑定apollo主分支    

            git remote add upstream  git@github.com:ApolloAuto/apollo.git

 2) 获取apollo主分支的修改到本地         

             git fetch upstream

 3)把upstram分支修改merge到本地个人分支                 

git merge upstream/master  //可以分解成两部:a)切到本地master分支git checkout master   b)合并upstream的更改git merge upstream

4) 把merge的结果push到自己分支          

git push

三、本地有些项目需要放到github上进行管理

1.在本地项目目录先创建本地仓库 ,进入项目目录执行下面命令:

git    init                                                                                                                                                                                                   2.

2.在github上new respority 比如:git@github.com:mfyanga/Demo.git。如果创建的时候,勾选的创建一个readme选项,那么在首次push本地仓库到github之前要执行一下:                                                                                                                                           

git pull --rebase origin master     //把readme更新下来,否则后面提交会出错被拒绝

3.本地仓库绑定远程的github                                                                                                                                                                                             

git remote add origin git@github.com:mfyanga/Demo.git

4.提交本地所有文                                                                                                                                                                               

git add

 

git commit -m "init my repository to github "

5.push 到github                                                                                                                                                                                                         

git push -u origin master  //首次要加-u,后面就不需要了

四、拉github上的一个分支

 背景:你本地并没有dev这个分支(你可以用git branch -a 命令来查看本地是否具有dev分支)

#1)把远程分支拉到本地

$ git fetch origin dev

#2)创建工作空间分支dev(该名字可以与远程不一样)并与远程dev分支关联

$ git checkout -b dev origin/dev //如果远程没有dev分之,就不要 1)和本处的origin/dev

#3)把远程分支上的内容都拉取到本地

$ git pull origin dev  //这里的dev指的是本地分之名

#4)本地修改提交到远程分支

$ git push -f -u origin dev

 

如果需要随时合并其他分支到当前开发的分之(比如原来被我们fork的主分支 RemoteMain)

#5)设置一个远程上游分)支

$ git remote add upstream git@github.com:RemoteMain/RemoteMain.git

#6)合并RemoteMain的更改到自己的dev(首先要保证自己的dev修改要暂存)

进入自己分之后

$ git pull --rebase upstream master

#7)如果有冲突更改冲突再

$ git rebase --continue

#8)更改完了,push

$ git push -f -u origin dev

五、git log的处理

1.删除日志(比如已经push到了github Server上的)

# 1).通过找到想要退回到的commit_id

$ git log

# 2)本地回到上一个commit_id

$ git reset --hard <commit_id>

# 3)推送到服务器,一定要加 --force 参数

$ git push origin HEAD:master --force   //注意:master 为实际你要推送的分之名称

六、删除github上的分支

$ git push origin --delete multi_navigation    //multi_navigation,远程的分支名

或者
$ git push origin :local_multi_navigation     //local_multi_navigation 远程的分支名,推送一个空分支到远程分支相当于删除分支

git diff branch --module

七、合代码技巧

1.从不同的仓库或分支合入代码

1) 新增源的仓库

    git remote add github_david git@github.com:davidhopper2003/apollo.git

 2)获取新增源仓库需要合入本地代码的分支

    git fetch github_david david_dev

3)合入特定的commit //新增源仓库的某一次提交的commit 

   git cherry-pick ff1b359f3a9dbef96a4060985d3d569fb868fc81 

八、git reset --hard 误操作找回回退的部分

1)从回退的历史记录 中找到你要恢复的commit id

git fsck --lost-found
检查对象目录中: 100% (256/256), 完成.
检查对象中: 100% (82495/82495), 完成.
dangling commit 35345469e6f35909c11688dccc73c69d64cc6b1c
dangling commit 5446ccfcb9ce9b14305518976b48d52cf95f3265
dangling commit d348e4b92d7cd394c62a1aa469546c7cf8659d22
dangling commit c255687cd63c7665620cd73ba2169b3846da7f75
dangling commit 13856c0d6fae3d38285a3e957bfaec1f1aa3d65b
dangling blob 19a41861c4a7bbfb0bda54ff9de992c28de52367

2)执行回退

 git reset --hard 9f1039cfcda5d637cb4ed51c55778324e8af0724
HEAD 现在位于 9f1039c Test:rollback.
ymf@ymf-ThinkPad-T470p:~/code/cidi_gitlab/cidi/apollo_navi$ git log
commit 9f1039cfcda5d637cb4ed51c55778324e8af0724
Author: mfyanga <yamf1@163.com>
Date:   Tue Oct 30 16:50:05 2018 +0800

    Test:rollback.
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值