Git 和 Github 的终极指南

文章亮点:
- Git 简介
- Git 存储库结构
- Github 的
- 通过 HTTPS 或 ssh 访问 Github 中央仓库
- 使用 git – 重要的 Git 命令
Git 简介
关于在 ubuntu 上的安装目的,可以参考这篇文章:
Git 是一个分布式版本控制系统。那么,什么是版本控制系统?
版本控制系统是一个系统,当我们在团队或个人中工作时,它会维护您项目的不同版本。(系统管理对文件的更改)随着项目的进展,会向其添加新功能。因此,版本控制系统会为您维护项目的所有不同版本,并且您可以通过为其命名(如 MyProject、MyProjectWithFeature1 等)回滚到所需的任何版本,而不会给您维护不同版本带来任何麻烦。
分布式版本控制系统意味着每个协作者(任何从事团队项目的开发人员)在他/她的本地计算机中都有一个项目的本地存储库,这与 central 不同,团队成员每次将他们的工作更新到主中央存储库时都应该有 Internet 连接。
所以,分布式是指:项目是分布式的。存储库是保存所有项目文件、图像等的区域。就 Github 而言:不同版本的项目对应提交。
关于 Github 介绍的更多细节,可以参考:
Git 存储库结构
它由 4 个部分组成:
- 工作目录:这是您创建项目 (编写代码) 并对其进行更改的本地目录。
- 暂存区(或索引):这是您在提交之前首先需要放置项目的区域。这用于其他团队成员的代码审查。
- 本地仓库:这是您的本地仓库,您可以在将更改推送到 Github 上的中央仓库之前将更改提交到项目。这就是分布式版本控制系统提供的内容。这对应于我们目录中的 .git 文件夹。
- 中央存储库: 这是中央服务器上的主项目,其副本与每个团队成员一起作为本地存储库。
所有存储库结构都是 Git 内部的,对开发人员是透明的。
一些与存储库结构相关的命令:
// transfers your project from working directory
// to staging area.
git add .
// transfers your project from staging area to
// Local Repository.
git commit -m "your message here"
// transfers project from local to central repository.
// (requires internet)
git push
Github 的
Github 基本上是 Microsoft 拥有的一家营利性公司,它在线托管 Git 存储库。它帮助用户在线、与其他用户共享他们的 git 存储库,或远程访问它。您还可以在 Github 上免费托管公共存储库。
用户出于各种原因在线共享他们的仓库,包括但不限于项目部署、项目共享、开源贡献、帮助社区等等。
访问 通过 HTTPS 或 SSH 的 Github 中央存储库
在这里,transfer project 意味着 transfer changes,因为 git 非常轻量级并且适用于项目中的更改。它在内部通过使用无损压缩技术并传输压缩文件来执行传输。Https 是访问 Github 中央仓库的默认方式。
- 通过 git remote add origin http_url:remote 表示远程中央仓库。Origin 对应于您需要定义的中央存储库(在此提供 HTTPS URL),以便将更改推送到 Github。
- 通过 SSH:远程连接到 Linux 或其他服务器。
如果您通过 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
初始化您的目录以使用 git 并创建本地存储库。.git 文件夹已创建 (OR)
git clone http_url
如果我们有一个现有的 git 仓库,并且我们想将其内容复制到新的地方,就可以这样做。
连接到远程存储库
git remote add origin http_url/ssh_url
连接到中央仓库进行 Push/Pull。pull 意味着将远程仓库上的更改采用到您的本地仓库。push 将本地仓库中的更改合并到远程仓库。
git pull origin master
在推送之前,应始终先从中央存储库中提取内容,以便了解其他团队成员的最新工作。它有助于防止合并冲突。这里,master 是指 master 分支(在 Git 中)。
git 中的 Stash Area
git stash
无论暂存区域中存在哪个文件,它都会在提交之前将该文件移动到 stash。
git stash pop
每当我们想从 stash 提交文件时,我们应该使用这个命令。
git stash clear
通过执行此作,将删除存储区域中的所有文件。
将文件添加到远程存储库的步骤:
首先,您的文件位于您的工作目录中,通过键入将其移动到暂存区域:
git add -A (for all files and folders)
#To add all files only in the current directory
git add .
Git Status:此处,未跟踪的文件是指您尚未添加到暂存区域的文件。Changes are not staged for commit 意味着您在工作目录中对该文件进行更改之前暂存了文件,并且需要再次暂存更改。Changes ready to be commit:这些是已提交并准备推送到中央存储库的文件。
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
以前的提交可以通过 git log 命令看到。
HEAD -> pointer to our latest commit.
提交时忽略文件
在许多情况下,该项目会创建大量日志和其他不相关的文件,这些文件将被忽略。所以要忽略这些文件,我们必须将它们的名称放在 “.gitignore” 文件中。
touch .gitignore
echo "filename.ext" >>.gitignore
#to ignore all files with .log extension
echo "*.log" > .gitignore
现在,在推送新提交时,写入 .gitignore 文件中的文件名将被忽略。获取 commits、commit 和 working tree 之间的更改。
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
这将以串行方式将 branch 与 master 合并。现在
git push origin master
移除或删除文件
删除。我们使用的 Git 仓库中的一个文件
git rm “file name”
仅从暂存区域中删除
git rm –cached “ file name”
撤消更改
要将所有文件更改为与上一个提交相同,请使用
git checkout -f
为开源做出贡献
开源可能被视为全球用户可以分享他们的意见、自定义或共同解决问题或共同完成所需项目的一种方式。许多公司在 Github 上在线托管存储库,以允许开发人员访问以更改他们的产品。一些公司(不一定是全部)以不同的方式奖励他们的贡献者。
您可以通过 fork 项目、对 fork 的存储库进行所需的更改,然后打开拉取请求来为 Github 上的任何开源项目做出贡献。项目所有者将审查您的项目,并要求改进它或合并它。
- App下载
- 项目客服
- 培训客服
- 平台客服
TOP