文章重点:
- Git 简介
- Git 存储库结构
- 通过 Https 或 ssh 访问 github 中央存储库
- 使用 git – 重要的 Git 命令
Git 简介
为了在 ubuntu 上安装,你可以参考这篇文章:https://www.geeksforgeeks.org/how-to-install-configure-and-use-git-on-ubuntu/
Git 是一个分布式版本控制系统。那么,什么是版本控制系统?
版本控制系统是一个系统,当我们在团队中或作为个人工作时,它可以维护您项目的不同版本。 (管理文件更改的系统)随着项目的进行,新功能会添加到项目中。所以,
版本控制系统会为您维护项目的所有不同版本,您可以回滚到您想要的任何版本,而不会给维护不同版本带来任何麻烦,方法是为其命名,例如 MyProject、MyProjectWithFeature1 等。
分布式版本控制系统意味着每个合作者(任何在团队项目上工作的开发人员)在他/她的本地机器上都有一个项目的本地存储库,这与中央存储库不同,在中央存储库中,团队成员每次将他们的工作更新到主中央存储库时都应该有互联网连接.
因此,分布式的意思是:项目是分布式的。
存储库是保存所有项目文件、图像等的区域。
就Github而言:不同版本的项目对应commit。
更多关于 Github 的介绍可以参考:https://www.geeksforgeeks.org/git-lets-get-into-it/
Git 存储库结构
它由4部分组成:
- 工作目录:这是您制作项目(编写代码)并对其进行更改的本地目录。
- 暂存区(或索引):这是在提交之前首先需要放置项目的区域。这用于其他团队成员的代码审查。
- 本地存储库:这是您提交更改的本地存储库
项目,然后将它们推送到 Github 上的中央存储库。这就是分布式版本控制系统所提供的。这对应于我们目录中的 .git 文件夹。 - 中央存储库:这是中央服务器上的主要项目,其副本
与每个团队成员作为本地存储库。
所有存储库结构都是 Git 内部的,对开发人员是透明的。
一些与存储库结构相关的命令:
git add
// transfers your project from working directory
// to staging area.
git commit
// transfers your project from staging area to
// Local Repository.
git push
// transfers project from local to central repository.
// (requires internet)
通过 Https 或 ssh 访问 github 中央存储库
在这里,传输项目意味着传输更改,因为 git 非常轻量级并且可以处理项目中的更改。它通过使用无损压缩技术和传输压缩文件在内部进行传输。 Https 是访问 Github 中央存储库的默认方式。
by git remote add origin http_url :
remote means the remote central repository.
origin corresponds to your central repository
which you need to define (hereby giving https URL)
in order to push changes to Github.
Via SSH: connect to Linux or other servers remotely.
如果您通过 ssh 访问 Github,则无需在每次将更改推送到 GitHub 时键入您的用户名和密码。
终端命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
This does the ssh key generation using RSA cryptographic algorithm.
eval "$(ssh-agent -s)" -> enable information about local login session.
ssh-add ~/.ssh/id_rsa -> add to ssh key.
cat ~/.ssh/id_rsa (use .pub file if not able to connect)
add this ssh key to github.
Now, go to github settings -> new ssh key -> create key
ssh -T git@github.com -> activate ssh key (test connection)
Refresh your github Page.
使用 git – 重要的 Git 命令
- Git用户配置(第一步)
git --version (to check git version) git config --global user.name "your name here" git config --global user.email "your email here"
这些是附加到提交的信息。
- 初始化目录:
git init initializes your directory to work with git and makes a local repository. .git folder is made
要么
git clone http_url This is done if we have an existing git repository.
- 连接到存储库:
git remote add origin http_url/ssh_url connect to central repo to push/pull
pull 意味着将中央存储库上的更改传输到您的本地存储库。 push 是 pull 的反之亦然。
git pull origin master
在推送之前始终先从中央仓库中提取内容,以便您了解其他团队成员的工作。
这里,master 指的是 master 分支(在 Git 中)。 - 将文件添加到中央存储库的步骤:
首先,您的文件在您的工作目录中,键入以下内容将其移动到暂存区:git add -A (for all files and folders) #To add all files only in the current directory git add .
git status:在这里,未跟踪的文件是指您尚未添加到暂存区的文件。更改未暂存以提交意味着您已经暂存了文件,然后您在工作目录中的该文件中进行了更改,并且需要再次暂存更改。
准备提交的更改:这些是已提交并准备好推送到中央存储库的文件。git commit -a -m "message for commit" -a: commit all files and for files that have been staged earlier need not to be git add once more -a option does that automatically.
git push origin master -> pushes your files to github master branch git push origin anyOtherBranch -> pushes any other branch to github. git log ; to see all your commits
git checkout commitObject(first 8 bits) file.txt-> revert back to this previous commit for file file.txt
commitObject 可以通过 git log 看到。
HEAD -> 指向我们最新提交的指针。
- 提交时忽略文件。
在很多情况下,项目会创建很多日志和其他不相关的文件,这些文件将被忽略。所以要忽略这些文件,我们必须将它们的名称放在“.gitignore”文件中。touch .gitignore echo "filename.ext" >>.gitignore #to ignore all files with .log extension echo "*.log" > .gitignore
现在,在推送新提交时,将忽略 .gitignore 文件中写入的文件名。
- 要获取提交、提交和工作树之间的更改。
git diff
‘git diff’ 命令将暂存区与工作目录进行比较,并告诉我们所做的更改。它比较较早的信息以及当前修改的信息。
在 Git 中分支
create branch ->
git branch myBranch
or
git checkout -b myBranch -> make and switch to the
branch myBranch
在您的分支机构中进行工作。
然后,
git checkout master ; to switch back to master branch
现在,
将内容与您的 myBranch 合并
git merge myBranch (writing in master branch)
这次合并进行了新的提交。
其他方式:
git rebase myBranch
这以串行方式将分支与 master 合并。
现在,
git push origin master
通过 fork 一个项目为开源做出贡献,并在您的分支中做一些工作(添加新功能),然后在 Github 上执行拉取请求。