github学习记录
github学习记录引言1.安装及初始化git2. 新建仓库3.clone仓库4.已存在仓库other引言参考博客.1.安装及初始化git参考博客前一部分。sudo apt-get install gitgit config --global user.name "Your Name"#配置git config --global user.email "email@exampl...
github学习记录
引言
参考博客.
常用组合1:
git add . #添加到暂存区,可以将.换成具体文件的名称
git commit -m "message" #本地做提交
git push origin master #把本地master分支的最新修改推送至GitHub
常用组合2:
git init # (初始化本地仓库)
git add . #(将本地所有文件加到仓库里)
git commit -m "message" #(设置提交信息)
git remote add origin git@github.com:Usrname/repositoryName.git #(本地仓库链接远程仓库)
git push -u origin master #(push文件到仓库中,第一次加参数-u)
1.安装及初始化git
sudo apt-get install git
git config --global user.name "Your Name" #配置
git config --global user.email "email@example.com"
. 创建 SSH Key : 在用户主目录下(Windows:C:\Users\Administrator\.ssh),看看有没有.ssh目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳到下一步 。 如果没有,打开Windows下打开Git Bash,创建SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
里面有id_rsa和id_rsa.pub两个文件,这两个就是SSHKey的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。登陆GitHub,打开“Settings”,“SSH and GPG keys”页面 , 点击 “new SSH keys”.Title随意取但是最好有寓意,在Key文本框里粘贴id_rsa.pub文件的内容 , 完事后 "ADD SSH keys "。
为什么GitHub需要SSH Key?因为GitHub需要识别出推送的提交确实是本人推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了本人的公钥,就可以确认只有本人才能推送。
2.新建仓库
参考链接,首先在网页上添加一个仓库。在GitHub上的这个仓库还是空的,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容上传到GitHub仓库里面。
进入本地仓库目录下:git remote add origin git@github.com: githubUsrname/test.git
找到自己对应的仓库,点击 clone or download 里面就会有与仓库的对应的地址,粘贴到命令里即可
。远程库的名字就是origin,这是Git默认的,也可以改成别的,但是origin这个名字一看就知道是远程库。
ls -ah #可以看目录下默认的隐藏的文件。
git remote #为了便于管理,git每个远程远程主机必须有一个主机名,git remote 会列出远程库的名字,默认是origin
git remote -v #查看远程主机的网址。
git remote rm 主机名 #删除远程主机
git remote add 主机名 #远程仓库地址 : 主机名对应origin, 远程地址 git@github.com:HWdragon/test_dragon.git
git push -u origin master
#把本地的内容推送到远程仓库里,把当前分支master推送到远程里,因为github 默认创建就有一个 master 分支,可以输入命令 git branch 查看 ,带 * 的表示当前在哪个分支 。
由于远程库是空的,第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
此后,只要本地作了更改,提交命令就很简单:
git add . #添加到暂存区
git commit -m "注解" #本地做提交
git push origin master #把本地master分支的最新修改推送至GitHub
问题:每次都报错误信息,输入:
git remote add origin git@github.com:HWdragon/test_dragon.git
显示:fatal: 远程 origin 已经存在。
解决办法:git remote rm origin
再次输入:git remote add origin git@github.com:HWdragon/test_dragon.git
推送远端:git push origin master
3.clone仓库
这一点真的很方便,在github上面找到好的项目后fork到自己的账户下面,然后直接clone(之前移植都是download,其实clone是最好的选择,download只是给没有github账号的一个备选项)到自己的目录就已经建立好了本地和远成的关联。假如到一个新的电脑上进行开发,无需U盘拷贝程序,直接clone下来然后更改后提交,完了后删除电脑上的所有程序,很酷!
作了更改后就直接提交就是,.gitignore这些文件会自动查找出变动的文件上传(另外,Tab也是能补齐的):
git add . #添加到暂存区,可以将.换成具体文件的名称
git commit -m "注解" #本地做提交
git push origin master #把本地master分支的最新修改推送至GitHub
4.已存在仓库
4.1 创建远程仓库
登录github,在上边创建一个仓库
复制仓库链接,比如为git@github.com:alex-my/some-project.git
4.2 初始化本地仓库
进入本地项目执行以下命令
#初始化本地仓库
git init
#添加全部文件
git add .
#提交到本地仓库
git commit -m "提交说明"
4.3 本地仓库与远程仓库绑定
绑定到远程仓库,并提交
#绑定,并取一个别名,通常用origin,后面的地址是前边创建的远程仓库地址
git remote add origin git@github.com:alex-my/some-project.git
#把本地仓库地址提交到远程仓库
git push origin master
4.4 修改本地仓库,并提交到远程仓库
假设修改了README.md文件
git add . #在根目录或者在文件所在目录执行
git status #查看变动
git commit -m "modify reade.md" #提交到本地仓库
git pull #如果是多人合作的项目,请先pull
git push #推送到远程仓库(第一个使用默认,作用和第一个一样)
git push origin master
4.5 仓库别名
如果有多个仓库或者多个分支,在推送或者拉取的时候需要注意
git pull 仓库别名 仓库分支
git push 仓库别名 仓库分支
5.从github上下载部分文件
downGit更方便!!
github页面上只对一个仓库提供了一个下载接口,如果只需要下载改仓库里面的部分文件如何处理呢?
具体实现如下:
(1)创建一个空的本地仓库,同时将远程 Git Server URL 加入到 Git Config 文件中。
mkdir project_folder #创建本地存在文件的文件夹
cd project_folder
git init
git remote add -f origin <url> # <url>:仓库clone链接****.git
(2) Config 中允许使用 Sparse Checkout 模式:git config core.sparsecheckout true
(3)指定真正想 Check Out 的文件,可以将它们作为一个列表保存在 .git/info/sparse-checkout 文件中,例如:
echo “libs” >> .git/info/sparse-checkout
echo “apps/register.go” >> .git/info/sparse-checkout
echo “resource/css” >> .git/info/sparse-checkout
(4)最后,以正常方式从想要的分支中将项目拉下来:git pull origin master
5.打标签
git branch
git checkout master
git tag v1.0 #打标签
git tag #查看所有标签
git push origin --tags #将标签上传到网页版
默认标签是打在最新提交的commit上的。有时候,如果忘了打标签可以找到历史提交的commit id,然后打上:
git log --pretty=oneline --abbrev-commit
git tag v0.9 6224937 #打标签
git tag -a v0.1 -m "version 0.1 released" 3628164
#创建带有说明的标签,⽤-a指定标签名,-m指定说明⽂字
git show v0.9 #查看标签信息
git tag -s v0.2 -m "signed version 0.2 released" fec145a
6.常见问题
! [rejected] master -> master (fetch first)
error: 无法推送一些引用到 'git@github.com:××××/×××××System.git'
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
解决方案如下:
1.强行上传:git push -u origin +master
2. 尽量先同步 github上的代码到本地,在上面更改之后再上传
强行同步时最好自己清楚差别在在哪儿。
7.合并分支
- 将 dev 分支合并到 master分支:
# 1.在 dev 分支进行提交修改
git add .
git commit -m "msg"
# 2.切换到 master 分支
git checkout master
# 3.合并 dev 到 master
git merge dev
# 4.回到 dev 分支
git checkout dev
- 合并 dev 的某个 commit 到 master 分支:
# 1.在 dev 分支查看提交记录,commit id.
git log
# 2.切换到 master 分支
git checkout master
# 3.合并 dev 的某个 commit 到 master 分支
git cherry-pick 62ecb3
# 4.回到 dev 分支
git checkout dev
8.commit 格式
- 参考.
方法一:
git commit -m "this is
> a line
> with new lines
> maybe"
直接回车就可以换行,“>”符号表示已按Enter,并且有新行。
$ git commit -m "Another way of demonstrating multicommit messages:
>
> This is a new line written
> This is another new line written
> This one is really awesome too and we can continue doing so till ..."
第一行作为标题。
方法二:
git commit -m $'first line\nsecond line'
$’ string ’ 形式的单词会被特殊对待。该单词扩展为 string,并按ANSI C标准的规定替换了反斜杠转义的字符。
方法三:
git commit -m "title" -m "first line
> second line"
9.子模块
9.1.构建
假设主仓库为A ,A路径下有B、C两个子模块,子模块的地址分别为https://github.com/usr/B.git
和https://github.com/usr/C.git
.
-
克隆主仓库 A并进入主仓库 A 目录:
git clone <主仓库A的URL>
cd A
-
初始化并更新子模块 B:
git submodule add <子模块B的URL> B git submodule update --init --recursive B
-
初始化并更新子模块 C:
git submodule add <子模块C的URL> C git submodule update --init --recursive C
-
进入子模块 B 目录:
cd B
在子模块 B 中,可以进行任何与 B 相关的操作,例如构建、测试或其他任务。 -
返回主仓库 A 目录:
cd ..
-
进入子模块 C 目录:
cd C
在子模块 C 中,同样可以进行与 C 相关的任何操作。
完成以上步骤后,就成功地构建了主仓库 A 并包含了子模块 B 和 C。
请注意,在初始化和更新子模块时,使用了 --init --recursive 参数来确保子模块的初始化和更新也是递归进行的,以获取子模块所需的所有文件和引用。
此外,可以根据需要对子模块 B 和 C 进行其他操作,例如切换分支、查看历史记录等。每次对子模块进行操作时,进入相应的子模块目录,并在该目录下执行相应的 Git 命令。
9.2.拉取
如果一个 Git 仓库包含了其他仓库(通常是作为子模块),可以使用以下步骤来克隆包含子模块的仓库:
- 使用 git clone 命令克隆主仓库:
git clone <主仓库的URL>
- 进入已克隆的主仓库目录:
cd <主仓库目录>
- 初始化子模块:
git submodule init
- 更新子模块:
git submodule update
通过以上步骤,将能够成功克隆主仓库以及它包含的子模块。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)