Git新手命令

如果您是Git的新手,您会发现某些功能与基于SVN或CVS的存储库相比有所不同。 该博客介绍了您需要了解的Git工作流程中的10个最重要的命令。

如果您使用的是Windows,并且要执行以下步骤,则只需在本地计算机上设置Git 。

在进入Git命令之前,请记住(不要忘记!),Git具有一个工作目录,一个暂存区和本地存储库。 请参阅下面的概述,摘自http://progit.org 。

GIT工作流程如下:您转到要进行版本控制的目录。 您可以使用git init将此目录置于版本控制下。 这将为该当前位置创建一个新的存储库。 您对文件进行更改,然后使用git add将文件暂存到暂存区域。 您将使用git statusgit diff来查看所做的更改,最后使用git commit将快照永久永久记录到本地存储库中。 当您要将更改上传到远程存储库时,将使用git push 。 当您要将更改从远程存储库下载到本地存储库时,将使用git fetchgit merge

让我们逐步进行此操作。

要从现有文件目录创建存储库,只需在该目录中运行git init即可。 转到要在版本控制下的目录:

git init


在提交到存储库之前,需要将所有新文件和更改过的文件添加到登台区域。 要将当前目录中的所有文件添加到暂存区:

git add --all

提交文件并更改存储库:

git commit -am "Initial commit"


注意,我使用了-am选项,它隐式地执行了add -all 。 此命令等效于SVN或CVS风格的“提交”。 再说一次:如果您想更新本地Git存储库,总会有一个添加操作和一个提交操作,以及所有新文件和修改过的文件。

然后,您可以在Github.com上创建一个存储库 。 假设您将其命名为git_example。

然后,将远程存储库地址添加到本地GIT配置中:

git remote add EXAMPLE https://[email protected]/nschlimm/git_example.git

请注意,在示例中,这就是我在Github.com上的用户名。 您显然需要使用您的。 我将远程存储库命名为“ EXAMPLE”。 您可以引用别名而不是始终使用远程URL。 您现在准备与远程存储库进行通信。

如果您在防火墙后面,请进行代理配置:

git config --global http.proxy http://username:[email protected]:80

然后,将文件推送到远程存储库:

git push EXAMPLE master


然后想象有人更改了远程文件。 您需要获取它们:

git fetch EXAMPLE

您需要将这些更改从远程主服务器合并到本地主分支(普通语言:将更改从本地存储库复制到工作目录)。 假设您当前的上下文是master分支,并且想要将EXAMPLE分支合并到master中,您将编写:

git merge EXAMPLE

要将登台区域与您的工作目录进行比较:

git status -s

该示例显示了修改README.txt(但尚未添加或提交)后的状态。

没有任何额外的参数,简单的git diff将显示自上次提交以来您在项目中更改的内容,这些内容尚未下一次提交到下一个提交快照。

git diff


该示例显示了在我编辑README.txt文件(但尚未添加或提交)之后的差异输出。 当我将所有更改添加到暂存时, git diff将不会显示更改,因为您的工作目录中没有未暂存的内容。


git status不同。 它显示了您最后一次提交与暂存/工作区域之间的区别:


简而言之: git status显示本地存储库与工作目录/临时区域之间的差异。 而git diff (如上所述)显示了暂存区域和工作目录之间的差异。

而已。 这些是新手必须了解的最重要的Git命令。 有关使用Git的更多信息,请参见gitref.org参考。

下载远程存储库

如果您要将存储库从Github.com(或任何其他远程地址)复制到本地计算机,请执行以下操作:

git clone https://[email protected]/nschlimm/spring-decorator.git

现在,您可以处理代码,并根据需要将更改推送回该远程存储库。

与分支机构合作–更改当前环境

Git中的分支不过是您正在使用的“当前上下文”。通常,您开始在“ master”分支中工作。 假设您想尝试一些东西,但不确定自己在做什么是否是个好主意(实际上经常会发生:-))。 在这种情况下,您可以创建一个新分支并尝试您的想法:

git branch [branch_name]

当您只输入git branch ,它将列出您的新分支。

如果您想使用新分支,可以编写:

git checkout [branch_name]

需要注意的一个重要事实:如果在分支之间切换,它不会更改已修改文件的状态。 假设您有一个修改后的文件foo.java 。 您从master分支切换到新的some_crazy_idea分支。 切换之后, foo.java仍将处于修改状态。 您现在可以将其提交到some_crazy_idea分支。 如果您切换到master分支,则此提交将不可见,因为您未在master分支上下文中提交。 如果文件是新文件,则您甚至不会再在工作树中看到该文件。

如果您想让其他人知道您的新想法,可以将分支推送到远程存储库:

git push [remote_repository_name] [branch_name]

您将使用fetch而不是push来将远程分支中的更改再次获取到本地存储库中。

如果不再需要分支,可以通过以下方法再次删除它:

git branch -d [branch_name]

删除文件

如果您不小心将某些内容提交给分支机构,则可以轻松地再次删除该文件。 例如,要删除当前分支中的readme.txt文件:

git rm --cached readme.txt

--cached选项仅从索引中删除文件。 您的工作目录保持不变。

您也可以删除文件夹。 例如,eclipse项目的.settings文件夹不应该与他人共享:

git rm --cached -r some_eclipse_project/.settings

运行rm命令后,文件仍在索引中(Git版本控制的历史记录)。 您可以使用以下命令永久删除完整的历史记录:

注意:请小心使用此类命令,并在将其应用于生产性存储库之前在存储库副本中尝试使用它们。 在运行此类命令之前,请始终创建完整存储库的副本。

git filter-branch --index-filter 'git rm --cached --ignore-unmatch [your_file_name]' HEAD

忽略文件:您不想对某个文件或目录进行版本控制

要忽略文件,只需将文件名添加到拥有该文件的目录中的.gitignore文件中。 这样,它将不再添加到版本控制中。 这是我的.gitignore用于Eclipse项目的根目录:

/target
/.settings
.project
.classpath

它忽略target.settings文件夹以及.project.classpath文件。

有时,配置适用于完整存储库的全局忽略规则很有帮助:

git config --global core.excludesfile ~/.gitignore_global

这将以下条目添加到我的.gitconfig全局参数文件中,该文件位于git根目录中。
excludesfile = d:/dev_home/repositories/git/.gitignore_global
这些是我的.gitignore_global文件中当前的全局排除规则: # Compiled source #
###################
*.class
注意:这些规则与其他用户共享。 可以将本地每个仓库规则添加到仓库中的.git / info / exclude文件中。 这些规则未与存储库一起提交,因此不会与其他人共享。

恢复文件–放回时钟

有时,您对文件进行了更改,一段时间后,您意识到所做的事情是个坏主意。 然后,您想回到最后的提交状态。 如果您对工作目录进行了更改,并且想要恢复工作目录中的上一个HEAD提交,请输入:

git reset --hard HEAD

该命令将当前分支头设置为最后一个提交(HEAD),并使用最后一个提交状态( --hard选项)覆盖本地工作目录。 因此它将覆盖您的已修改文件。

您可以命名分支或类似“ v0.6”的标记来代替HEAD(这是您的最后一次提交)。 您还可以重置为先前的提交:HEAD〜2是最后一次提交之前的提交。

可能是您想要恢复在工作目录中删除的文件。 这是我输入的用于还原意外删除的Java文件的内容:

git checkout HEAD sources/spring-decorator/src/test/java/com/schlimm/decorator/simple/SetupSession.java

再次:您可以使用分支或类似'v0.6'的标签来代替HEAD。 您可以从先前的提交中提取文件:HEAD〜2是最后一次提交之前的提交。

使用标签–为您的源代码添加书签

有时您想要制作源代码的版本。 这样,您以后可以参考它。 要将版本标签v1.0.0应用于您的文件,请执行以下操作:

git tag -a v1.0.0 -m "Creating the first official version"

您可以在远程存储库中与他人共享标签:

git push [remote_repository_name] --tags

其中remote_repository_name是您的远程存储库的别名。 您编写fetch而不是push来获取其他人提交给远程存储库的标签,再到本地存储库。

如果您仅输入git tag ,它将为您提供已知标签的列表。 要获取有关v1.0.0标记的信息,您可以编写:

git show v1.0.0 -s

如果要继续处理标签,例如在版本为v5.0.1的生产分支上,请输入:

git checkout v5.0.1 -b [your_production_branch]

请注意,此命令还会为该标记创建一个新分支,这样您就可以进行提交以及您希望记录回存储库的任何其他内容。

参考:来自JCG合作伙伴 Niklas的“ Git新手的十大命令”。


翻译自: https://www.javacodegeeks.com/2012/08/git-newbie-commands.html

你可能感兴趣的:(git,java,python,linux,github)