Tutorial - Git

1 minute read

Published:

init repository

初始化本地repository。

git init

对本地repository进行git管理。

git add * git commit -m “some info”

关联远端repository。

git remote add origin https://github.com/yourgithubID/gitRepo.git

这个 *https://github.com/yourgithubID/gitRepo.git * 必须存在,需要提前到github上建好。当然这里不限于github,其他git服务器也可以。

将本地仓库push到远程仓库

git push -u origin master

由于在建立github repository时,在master分支创建了README.md,在push时候出现错误。

可以通过如下命令进行代码合并【注:pull=fetch+merge] git pull –rebase origin master 执行上面代码后可以看到本地代码库中多了 README.md 文件。 再执行语句 git push -u origin master 即可完成代码上传到github。

clone

–depth 可以加速repository的下载速度,指定commit history中的depth条记录。

比如,下条只取最近一次commit的history。

git clone –depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

下载指定分支或者tag: git clone -b ‘v2.0’ –single-branch –depth 1 https://github.com/git/git.git

branch

list branches git branch -a

checkout a specific branch git checkout

Create the branch on your local machine and switch in this branch

git checkout -b [name_of_your_new_branch]

Push the branch on github

git push origin [name_of_your_new_branch]

或者首次使用 -u 选项,之后仅仅使用git push即可。

git push -u origin

Delete a branch on your local filesystem

git branch -d [name_of_your_new_branch]

To force the deletion of local branch on your filesystem

git branch -D [name_of_your_new_branch]

Delete the branch on github

git push origin :[name_of_your_new_branch]

版本管理

git reset 版本回滚,向前回滚两个版本,可以用 HEAD~2,也可以使用7位commit id号。 git reset HEAD~2 git reset 1234567

Revert 顾名思义,版本还原,即撤销一个提交的同时会创建一个新的提交。 还原倒数第二个commit。 git revert HEAD~2

revert 和 reset 区别是revert会改变提交历史,而reset不会。

undo all changes unstage all files you might have staged with git add git reset

revert uncommitted changes git checkout .

git reset –hard HEAD

remove all local untracked files preview files to be deleted!

git clean -n

then remove all untracked files.

git clean -fdx

github操作

为了方便管理repository,免去每次push时候输入账户名和密码,接下来我们需要生成SSH公私钥对,并将公钥上传到 project->Settings->Deploy keys->Add deploy key。 首先检查是否已经存在 SSH key 。

ls -al ~/.ssh

出现类似

id_dsa.pub id_ecdsa.pub id_ed25519.pub id_rsa.pub

如果想继续使用上述密钥,可直接将公钥拷贝出来;否则,要继续自行生成。

Generating a new SSH key and adding it to the ssh-agent

ssh-keygen -t rsa -b 4096 -C “your_email@example.com”

如果想要保存不一样的位置或者名称,在下面的提示信息中输入即可。

Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter]

将 SSH key 添加到 ssh-agent 中。

eval “$(ssh-agent -s)” ssh-add ~/.ssh/id_rsa 执行ssh-add时出现 Could not open a connection to your authentication agent 。 可能当前SHELL不支持,退出当前SHELL即可。

ssh-agent bash

再次执行

ssh-add ~/.ssh/id_rsa ssh-add -l

github如何向开源项目提交pr

fork 到自己的仓库 git clone 到本地

上游建立连接 git remote add upstream 开源项目地址

创建开发分支 (非必须) git checkout -b dev

修改提交代码 git status git add . git commit -m “message” git push origin branch

同步代码三部曲 git fetch upstream git rebase upstream/master git push origin master

提交pr 去自己github仓库对应fork的项目下new pull request